在mvc中,显示一个指向某action的链接,可以用Html.ActionLink
@Html.ActionLink("text", "index")
其中text是链接a显示的文字,如果希望链接加在一个图片上,用这样的方式就会有问题了
@Html.ActionLink("", "index")
Html为:
当然,对于这种情况,我们可以用Url.Action来解决
如果是Ajax.ActionLink呢
@Ajax.ActionLink("", "index", newAjaxOptions{UpdateTargetId="updiv",OnSuccess="dosomthing"})
当使用Ajax.ActionLink时,mvc自动为我们添加了一些a元素上得属性,他和jquery.unobtrusive-ajax.js一起作用,实现了很方便的ajax功能。
遗憾的是同样不同输出html代码,如果这个也要用Url.Action的话,那一堆属性都得自己手写,实在是。。。
使用扩展方法,对Ajax.ActionLink生成的结果(MvcHtmlString)做一些处理
@Ajax.ActionLink("", "index", newAjaxOptions{UpdateTargetId="updiv",OnSuccess="dosomthing"}).WriteHtml()
a下面已经包含有一个img元素
扩展方法很简单
public staticIHtmlStringWriteHtml(thisMvcHtmlStringstr)
{
return newHtmlString(HttpUtility.HtmlDecode(str.ToString()));
}
输出各种html
@Ajax.ActionLink("text", "index", newAjaxOptions{UpdateTargetId="updiv",OnSuccess="dosomthing"}).WriteHtml()
对Html.ActionLink,Ajax.ActionLink都好使