[asp.net-mvc]ASP.NET MVC: AJAX ActionLink-目标 HTML 属性

发布时间: 2017/3/25 10:29:14
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有 Ajax actionlink 请求中的控制器方法的字符串。我想要那个字符串插入超链接的属性。如何指定目标 id 元素的属性字段?

<img id="CHANGE-MY-SRC" src=ViewData["src"] >

<%=Ajax.ActionLink("Change IMG Source","actionChange",new AjaxOptions()         
UpdateTargetId="CHANGE-MY-SRC"})%>

public string actionChange()
{
   ViewData["src"]= "somethingNew";

   return ????????
}

解决方法 1:

Ajax 佣工的默认行为不会支持这样做。 你可以但是,创建一个自定义的 JavaScript 处理程序时,Ajax 请求返回,运行,然后使用,注入该属性的值

创建一个共同的 JavaScript 文件 (它在主页面,例如负载) 和添加此函数︰

// Creates an Ajax OnComplete handler that will inject 
///the contents into the specified attribute, rather than the InnerHtml
function createAttributeInjector(attributeName) {
    return function(ajaxContext) {
        if(ajaxContext.get_updateTarget() !== null) {
            ajaxContext.get_updateTarget()[attributeName] = ajaxContext.get_data();
        }
        // IMPORTANT: Suppress the default behavior!
        return false;
    }
}

然后,在构建您的 Ajax 链接时︰

Ajax.ActionLink("Change IMG Source", "actionChange", new AjaxOptions() {
    UpdateTargetId="CHANGE-MY-SRC", 
    OnCompleted="createAttributeInjector('src')"
}

免责声明︰ 我没能给这一项测试,但 Ajax 佣工也做过类似的事情。 如果你有问题,我很高兴帮助,张贴在评论为我的答案 ! 如果它工作,让我知道在评论以及中 !

如果你有源 (你可以得到它在 CodePlex 上),你可以签出 MicrosoftMvcAjaxScript 项目中的 AjaxContext.cs 文件,您可以从 OnCompleted 处理程序访问的属性的完整列表

官方微信
官方QQ群
31647020