.net - ASP.NET MVC : AJAX ActionLink- Target an HTML attribute

标签 .net asp.net-mvc asp.net-ajax

我有一个 Ajax 操作链接,它在 Controller 方法中请求一个字符串。我想将该字符串插入到超链接的属性中。如何指定目标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 ????????
}

最佳答案

Ajax 助手的默认行为不支持这一点。但是,您可以创建一个在 Ajax 请求返回时运行的自定义 JavaScript 处理程序,然后使用该处理程序将值注入(inject)到属性中

创建一个通用 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 助手完成了类似的事情。如果您有问题,请在评论中发表我的回答,我很乐意提供帮助!如果有效,请在评论中告诉我!

如果您有源代码 ( you can get it on CodePlex ),则可以查看 MicrosoftMvcAjaxScript 项目中的 AjaxContext.cs 文件,以获取可从 OnCompleted 处理程序访问的属性的完整列表

关于.net - ASP.NET MVC : AJAX ActionLink- Target an HTML attribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/488726/

相关文章:

.net - 在程序集“SMSApp”中找到了多个迁移配置类型。指定要使用的名称

javascript - 重用 AngularJS Controller 逻辑

ajax - 使用 Ajax 将表单数据发送到 Controller 操作

ruby-on-rails - ASP.NET MVC 能否像 Ruby on Rails 一样返回 javascript 响应?

.net - WPF - 在 SYSTEM 帐户下执行进程时性能低下

javascript - Microsoft JScript 运行时错误 : Object doesn't support property or method '__defineGetter__

javascript - 使用 jquery 连接时 Bootstrap 模式未加载

c# - 返回未定义的 asp.net 页面方法

c# - 使用 C# 为通过 Gmail 发送的邮件设置不同的 "From"地址

.net - 为.NET程序提供windows应用程序和控制台应用程序的输出类型