我正在尝试使用ASP.NET MVC Framework,并希望创建一个ajax帮助器方法。基本上这个帮助器就像ActionLink一样,但没有对其链接文本进行编码。写作HtmlHelper是相当简单的,你只需要编写自己的GenerateLinkInternal版本。这不适用于AjaxHelpers,因为GenerateLink的ajax版本间接调用内部的ToJavascriptString(通过GenerateAjaxScript),因此无法在MVC程序集之外调用。我当然可以改写整个事情,但似乎有点矫枉过正,有更好的方法吗?
最终,我想让这个助手像BeginForm一样使链接环绕一块HTML。我还没有看过它,但我认为它也使用了ToJavascriptString。我搜索过网络,通过MVC源代码,我开始怀疑自己是否完全走错了路。
由于
更新:我越看这个问题,我就越认为根本就没有解决方案。编写MVC框架的人并没有考虑帮助人们编写自己的帮助者!
更新:我最终编写了一个几乎与AjaxOptions功能重复的帮助程序。
答案 0 :(得分:0)
您可以通过使用Html.ActionLink()
从头开始编写自己的帮助程序(即不要调用任何Ajax.ActionLink()
/ Url.Action()
方法)来更轻松地完成此操作代替。
例如,执行此操作非常简单:
public static string NonEncodedUrl(this HtmlHelper helper,
string linkAction, string text)
{
// Get a new UrlHelper instance in the current context
var url = new UrlHelper(helper.ViewContext.RequestContext);
return String.Format("<a href=""{0}"">{1}</a>", url.Action(linkAction), text);
}
您当然可以通过重载和额外参数来扩展它,以满足您自己的需求。