2

我知道存在Ajax.ActionLink函数,其签名如下:

@Ajax.ActionLink(
    "click me", 
    "SomeAction",
    "SomeController",
    new AjaxOptions { 
        HttpMethod = "POST", 
        OnSuccess = "success" 
    }
)

我可以附加我的回调,例如:

function success(data) {
    var json = $.parseJSON(data.responseText);
    alert(json.someProperty);
}

我知道 html 助手是扩展方法。问题:如何创建像 Ajax.ActionLink 这样的自定义 html 助手,我可以在其中指定回调函数。谁能给我举例说明如何使该扩展方法能够将回调函数作为参数并执行它。

4

1 回答 1

3

谁能给我举例说明如何使该扩展方法能够将回调函数作为参数并执行它。

这里:

public static class HtmlExtensions
{
    public static IHtmlString ExecuteCallback(this HtmlHelper helper, string callback)
    {
        var script = new TagBuilder("script");
        script.Attributes["type"] = "text/javascript";
        script.InnerHtml = string.Format("{0}();", callback);
        return new HtmlString(script.ToString(TagRenderMode.Normal));
    }
}

然后在您看来,您可以调用助手:

<script type="text/javascript">
    function someCallback() {
        alert('the callback is executed');
    }
</script>
@Html.ExecuteCallback("someCallback")
于 2012-10-17T12:34:13.150 回答