如何防止来自asp.net linkbutton

时间:2015-04-29 14:27:31

标签: c# jquery html asp.net

ASP:

<asp:LinkButton ID="lbSave" OnClick="lbSave_Click" runat="server">Save</asp:LinkButton>

HTML:

<a id="ContentMain_lbSave" href="javascript:__doPostBack(&#39;ctl00$ContentMain$lbSave&#39;,&#39;&#39;)">Save</a>

代码隐藏:

public void lbSave_Click(object sender, EventArgs e)
    {
        if (strP != "")
        {
            ScriptManager.RegisterStartupScript(this.Page, typeof(Page), "DiffUser", "showDiffUser();", true);
        }
        else
        {
            //do something else...
        }
    }

JQuery的:

function showDiffUser() {
    $("#dvHide").fadeIn("slow");
    $("#backOverlay").fadeIn("slow");
}

当我单击按钮时,我希望页面不进行回发并运行JQuery函数。相反,当我单击链接时,它会刷新页面,然后执行JQuery函数。

如何阻止回发。

我尝试了以下内容:onClientClick='javascript:void(0);'但不执行JQuery函数。

3 个答案:

答案 0 :(得分:3)

OnClientClick="return false;"

<强>更新

OnClientClick="showDiffUser();return false;"

showDiffUser();调用JS-Method

return false;阻止了回发

答案 1 :(得分:2)

在单击按钮后,您只需将jQuery函数调用添加到页面。当然,如果你取消点击回发,函数调用永远不会到达页面而永远不会被执行。

你想要的是调用这个函数然后抑制,对吧?因此,请执行以下操作:

OnClientClick="showDiffUser(); return false;"

您不再需要服务器端点击处理程序了。

答案 2 :(得分:1)

如果您不希望导致回发不使用.Net LinkBut​​ton,请使用标准HTML超链接并使用jQuery捕获事件:

<a id="my-link">Save</a>

<script>
$(function () {
   $("#my-link").click(function () {
      showDiffUser();
   });
})
</script>

在同一个调用中,您可以执行AJAX调用来提升服务器端验证:

<script>
$(function () {
   $("#my-link").click(function () {
      // AJAX Call
        $.ajax({
            type: "post",
            url: "your-url",
            success: function (returnData) {
                showDiffUser();
            }
        });
   });
})
</script>