在Asp.net mvc3 razor中我有:
Ajax.ActionLink("Hello world", "Hello", "Say", new RouteValueDictionary(new { word = "Hello" }),new AjaxOptions { HttpMethod = "GET", InsertionMode = InsertionMode.Replace, UpdateTargetId = "dynamic-container" })
它产生
<a href="...." ...>Hello world</a>
我想得到的是
<a href="..." ...><my><html><content/></html></my></a>
如何传递“”以便插入而不是标准文本?
答案 0 :(得分:7)
答案 1 :(得分:0)
代码:
Ajax.ActionLink("Hello world", "Hello", "Say", new RouteValueDictionary(new { word = "Hello" }),new AjaxOptions { HttpMethod = "GET", InsertionMode = InsertionMode.Replace, UpdateTargetId = "dynamic-container" })
提供的链接导致错误。链接如下所示:
.../Say/Hello?Count=1&Keys=System.Collections.Generic.Dictionary%602%2BKeyCollection%5BSystem.String%2CSystem.Object%5D&Values=System.Collections.Generic.Dictionary%602%2BValueCollection%5BSystem.String%2CSystem.Object%5D
这是BAAADDDDD ....问题是这使用了错误的重载。而不是:
new RouteValueDictionary(new { word = "Hello" })
应该在哪里:
new { word = "Hello" }
当代码形成前一个答案中的链接时,就像一个魅力 - 希望它对某人,任何人都有帮助
答案 2 :(得分:0)
您可以使用javascript / jQuery在渲染后强制插入项目。这可能有点“快速而肮脏”。但它确实可以毫不费力地完成工作。
使用HtmlAttributes对象为每个@Ajax.Action
附加一个类,以便稍后使用JS选择它们:
@Ajax.ActionLink(..... new { @class = "AjaxLink btn btn-primary" })
然后使用javascript / jQuery按类查找链接,并替换每个链接的innerHTML。以下是一个jQuery示例,它也可以用普通的javascript编写。我个人喜欢jQuery,因为它更简洁:
<script type="text/javascript">
//hack to insert a <span> inside the remove links so that the text can be styled
$('.AjaxLink ).html('<i class="fa fa-minus-circle"></i><span class="ActionLinkText">Your Text here</span>');
</script>
希望这有帮助
答案 3 :(得分:0)
解决方案@ 4rchie指向使用辅助方法是最好的解决方案。但是还有另一种方法可以使用data- *属性使用链接插入数据,并使用jquery完成其余工作。
例如:
<div class="list-group">
@foreach (var item in Model.Things)
{
@Ajax.ActionLink(item.Name, "actionName", "controllerName", new { Id = item.Id }, new AjaxOptions { HttpMethod = "GET", InsertionMode = InsertionMode.Replace, UpdateTargetId = "areaPanel", OnComplete = "" }, new { @class = "list-group-item", data_frequency = item.frequency})
}
</div>
Jquery代码:
jQuery(document).ready(function () {
$("[data-frequency]").each(function () {
var linkText = $(this).html();
var attr = $(this).attr("data-frequency");
$(this).html("<span class ='badge'>" + attr + "</span>" + linkText);
})
}