如何创建自定义MVC3 ActionLink方法?

时间:2011-12-15 10:23:52

标签: c# asp.net-mvc asp.net-mvc-3

  

可能重复:
  How to put span element inside ActionLink MVC3?

如何创建生成此输出的自定义MVC3 ActionLink方法:

<li>
    <a href="/Home/ControllerName" data-ajax-update="#scroll" 
     data-ajax-mode="replace" data-ajax-method="GET" 
     data-ajax-loading="#progress" data-ajax="true">

     <span>LinkText</span> // this span generated inside <a>

    </a>
</li>

2 个答案:

答案 0 :(得分:7)

你要么创建一个新的扩展方法,它返回一个你自己放在一起的MvcHtmlString对象(但是请注意html编码),我们创建一个可以渲染的局部视图当你需要它时,你不必通过代码创建HTML。

public static class MyHtmlExtensions {
    public static MvcHtmlString MyActionLink(this HtmlHelper html, string action, string controller, string ajaxUpdateId, string spanText) {
         var url = UrlHelper.GenerateContentUrl("~/" + controller + "/" + action);
         var result = new StringBuilder();
         result.Append("<a href=\"");
         result.Append(HttpUtility.HtmlAttributeEncode(url));
         result.Append("\" data-ajax-update=\"");
         result.Append(HttpUtility.HtmlAttributeEncode("#" + ajaxUpdateId));
         // ... and so on

         return new MvcHtmlString(result.ToString());
    }
}

答案 1 :(得分:2)

您必须为剃刀创建自定义HTML帮助程序。这样,您就可以为链接呈现自定义HTML(包括span标记的要求)。这个助手扩展方法必须返回一个MvcHtmlString对象。

creating HTML helper的一个例子可以在这里找到。