我定义了一个jquery-tmpl:
<script id="postTemplate" type="text/x-jquery-tmpl">
<div class="div-msg-actions-inner">
@Html.ActionLink("Edit", "Edit", "Post", new { postId = "${PostId}" }, new { @class = "button" })
@Html.ActionLink("Reply", "Reply", "Post", new { topicId = "${TopicId}" }, new { @class = "button" })
</div>
</script>
操作链接导致“$”被编码为“%24”。有没有解决方法,以便我的操作链接中的ID将被正确替换?
答案 0 :(得分:4)
继续发送相同的路由值参数,但将此脚本放在布局的末尾。它将在每个页面的所有模板中替换所有$ {propName}字符串。
$("script[type='text/x-jQuery-tmpl']").text(function (i, oldText) {
return oldText.replace(/(%24%7B.+?%7D)&/gi, "{$1}&")
.replace(/%24%7B(.+?)%7D/gi, "$${$1}");
});
答案 1 :(得分:2)
@Html.ActionLink("Edit", "Edit", "Post", new { postId = "999" }, new { @class = "post-button", })
@Html.ActionLink("Reply", "Reply", "Post", new { topicId = "888" }, new { @class = "reply-button" })
...
$("#postTemplate").text($("#postTemplate").text().replace("999", "${PostId}"));
$("#postTemplate").text($("#postTemplate").text().replace("888", "${TopicId}"));
这是我最终使用的解决方案。
答案 2 :(得分:1)
您可以实现此目的的一种方法是跳过ActionLink Helper并使用简单的HTML锚标记,例如。
<a href='@Url.Content("~/Post/Edit/${PostId}")'>Post</a>
<a href='@Url.Content("~/Post/Reply/${TopicId}")'>Reply</a>
我不知道,但这对我有用。
答案 3 :(得分:0)
Html.Raw
与Url.Action
您是否尝试将Html.Raw
与Url.Action
结合使用?因此,不是使用Html.ActionLink
创建链接,而是生成常规HTML,而不对该特定链接/锚点的URL进行编码。
<a href="@Html.Raw(Url.Action("Edit", "Post", new { postId = "${PostId}"}, new { @class = "button" }))">Edit</a>
这应该将模板变量保留在模板中。
Html.Raw
与Html.ActionLink
我想你已经尝试过了:
@Html.Raw(Html.ActionLink("Edit", "Edit", "Post", new { postId = "${PostId}" }, new { @class = "button" }))