我正在开发一个使用 jsrender 的 MVC 项目。这是我第一次使用 jsrender(事实上我在 javascript 和 C# 方面还很陌生,哈哈),我已经为一个特定的问题苦苦挣扎了一整天。
我有以下 javascript
$.post('@Url.Action("GetDocs","Place", new { placeID = Model.PlaceId})').done(
function (data) {
var template = $.templates("#doc-tmpl");
var htmlOut = template.render(data.documents);
$("#documentListContainer").append(htmlOut);
$(".docCount").html(data.count);
});
这将获取我需要的所有数据,但我需要使用该数据创建一个 Url.Action()。
<script id="doc-tmpl" type="text/x-jsrender">
<div class="col-md-4">
<h5>{{:Name}}{{:test}}</h5>
<p id="DocId" class="hidden"><br />{{:DocId}}</p>
<img src="data:image;base64,{{:FrontCoverImg}}" width="140" height="230" />
<a href="@Url.Action("DisplayPDF","Place", new { DocId = "{{:DocId}}" })">Link</a>
</div>
我需要从@Url.Action("DisplayPDF","Place", new { docId = "{{:docId}}" })
. 显然,这在当前状态下不起作用。
我查看了 jsrender 文档和其他与 jsrender 和 MVC 相关的问答,但我无法理解它的工作方式。
我想到的一件事是在 javascript 中创建 @Url.Action() 并使用标签将其弹出到模板中,但是我无法弄清楚如何从 $ 中添加数据。发布以使其可用标签。
编辑: 我的意思是,javascript/getDocs 帖子返回的数据类似于:
documents": [
{
"DocId": "86f86a32-5005-456c-8dd1-c023a66dd794",
"Name": "How to...",
"FrontCoverImg": "Base64String(docImg)"
},
{
"DocId": "d29f8afc-3191-47f1-9b88-1de08582ba27",
"Name": "A Document",
"FrontCoverImg": "Base64String(docImg)"
}
],
"count": 2
}
然后设置为填写模板。我希望有一种方法可以将 @Url.Action() 语句添加到这些键/值对中,例如:
"viewdoc" : '@@Url.Action("DisplayPDF", "Place", new {DocId = ' + DocId + ', @@class = "btn btn-default" })';
(不确定语法是否完全正确)所以我可以将其{{:viewdoc}}
放入模板中。
我至少在正确的轨道上吗?哈哈