0

我正在尝试 ASP.NET MVC 框架并想创建一个 ajax 辅助方法。基本上这个助手会像 ActionLink 一样工作,但不对其链接文本进行编码。编写为 HtmlHelper 相当简单,您只需编写自己的 GenerateLinkInternal 版本。这对 AjaxHelpers 不起作用,因为 GenerateLink 的 ajax 版本间接调用内部的 ToJavascriptString(通过 GenerateAjaxScript),因此不能在 MVC 程序集之外调用。我当然可以重写整个事情,但它似乎有点矫枉过正,有没有更好的方法?

最终,我想让这个助手像 BeginForm 一样使链接围绕 HTML 块。我还没有看过它,但我认为它也使用了 ToJavascriptString。我在网上搜索过,并查看了 MVC 源代码,我开始怀疑我是否完全走错了路。

谢谢

更新:我越看这个问题,我越觉得根本没有解决办法。编写 MVC 框架的人并没有考虑帮助人们编写自己的助手!

更新:我最终编写了一个几乎重复 AjaxOptions 功能的助手。

4

1 回答 1

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);
}

您当然可以使用重载和额外参数来扩展它以满足您自己的需要。

于 2009-10-04T19:06:12.427 回答