4

在 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>

如何传递 "" 以便将其插入而不是标准文本?

4

4 回答 4

9

我刚刚找到了解决方案

http://forums.asp.net/post/4517653.aspx

它不像我预期的那样优雅,但应该这样做。

有人有更好的主意吗?

于 2012-05-18T10:18:03.320 回答
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" }

当代码形成先前答案中的链接时就像一个魅力 - 希望它对某人,任何人都有帮助

于 2012-05-18T19:20:56.743 回答
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>

希望这可以帮助

于 2015-09-22T14:41:59.560 回答
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);
})
}

结果就像http://getbootstrap.com/components/#list-group-badges

于 2015-10-17T19:59:56.077 回答