如何从ASP.NET MVC框架中的AjaxOptions获取生成的JavaScript?

时间:2009-10-04 18:45:01

标签: asp.net-mvc-ajax

我正在尝试使用ASP.NET MVC Framework,并希望创建一个ajax帮助器方法。基本上这个帮助器就像ActionLink一样,但没有对其链接文本进行编码。写作HtmlHelper是相当简单的,你只需要编写自己的GenerateLinkInternal版本。这不适用于AjaxHelpers,因为GenerateLink的ajax版本间接调用内部的ToJavascriptString(通过GenerateAjaxScript),因此无法在MVC程序集之外调用。我当然可以改写整个事情,但似乎有点矫枉过正,有更好的方法吗?

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

由于

更新:我越看这个问题,我就越认为根本就没有解决方案。编写MVC框架的人并没有考虑帮助人们编写自己的帮助者!

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

1 个答案:

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

您当然可以通过重载和额外参数来扩展它,以满足您自己的需求。