如何在调用后隐藏Ajax.ActionLink

时间:2011-10-04 20:46:25

标签: jquery asp.net-mvc asp.net-mvc-2

<%: Ajax.ActionLink("View Code Status", "GetCodes", "BvIndex",
        new { id = o.Id },
        new AjaxOptions { UpdateTargetId = count.ToString() },
        new { @id = "h" + count.ToString()}) %>

我想在进行ajax调用后隐藏链接。我尝试在成功和不完整的方法上做,但我无法做到这一点。 任何解决方案。

这是我尝试成功的方式,我能够隐藏它,但我收到了错误。

<%: Ajax.ActionLink("View Code Status", "GetCodes", "BvIndex",
        new { id = o.Id },
        new AjaxOptions {
                    OnSuccess = "functionhide("+count+")",
                    UpdateTargetId = count.ToString()
        },
        new { @id = "h" + count.ToString()})%>

onsuccess功能

function functionhide(count) {
            $("#h" + (count)).hide();
        };

这样工作正常但是,我收到一个错误说,

Microsoft JScript运行时错误:'b'为null或不是对象

3 个答案:

答案 0 :(得分:1)

试试这样:

<%= Ajax.ActionLink(
    "View Code Status", 
    "GetCodes", 
    "BvIndex",
    new { id = o.Id },
    new AjaxOptions {
        OnSuccess = "functionhide",
        UpdateTargetId = count.ToString() // <-- Warning you are probably having invalid markup as ids cannot start with a number
    },
    new { 
        id = "h" + count.ToString() 
    }
) %>

然后:

function functionhide() {
    $(this).hide();
}

答案 1 :(得分:0)

我发现这个Stack Overflow post可能会帮助你...他们注意到收到相同的错误消息并使OnSuccess值成为匿名函数似乎解决了这个问题。

答案 2 :(得分:0)

简单的解决方案是使用 -

OnComplete="javascript:this.style.display='none'"

e.g。

@Ajax.ActionLink(
  "Hide button before ajax",
  "myAction", 
  new AjaxOptions { OnComplete="javascript:this.style.display='none'" }
)