【问题标题】:How to prevent postback from asp.net linkbutton如何防止从asp.net链接按钮回发
【发布时间】:2015-07-08 21:52:33
【问题描述】:

平均售价:

<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 函数。

【问题讨论】:

标签: c# jquery html asp.net


【解决方案1】:

试试

OnClientClick="return false;"

更新:

OnClientClick="showDiffUser();return false;"

showDiffUser(); 调用 JS-Method

return false; 防止回发

【讨论】:

  • 我试过了,但是当我点击链接时,没有任何反应。
  • 谢谢。我遗漏了一些信息并更新了我的问题。我必须通过代码隐藏调用该函数,因为我正在进行 if/else 检查。
  • 当你想做一些服务器端的事情时,你需要一个回发或 ajax
  • 这听起来是个好主意。请给我一些信息开始:)谢谢。
  • 这篇文章似乎符合您的需求stackoverflow.com/questions/18236634/…
【解决方案2】:

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

你想要的是调用这个函数然后抑制,对吧?因此这样做:

OnClientClick="showDiffUser(); return false;"

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

【讨论】:

  • 感谢您的回复。如更新的问题所示,我需要进行服务器端调用。请指教。
  • @SearchForKnowledge,嗯,现在有点困惑。那么您是否要完全禁用回发?按照目前的情况,您希望它有时会发生,但并非总是如此。
  • 所以当页面加载时,strP 被赋值。如果为空则执行 JQuery,否则不执行。 strP 是服务器端变量。我知道我在混淆这个问题。
【解决方案3】:

如果您不想导致回发,请不要使用 .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>

【讨论】:

  • 需要执行服务器端来检索变量值。不幸的是,这是我的问题:/
  • 我已经编辑包含一个 AJAX 调用,您可以在其中将您的变量传回。如果您无法始终将 LinkBut​​ton 包装在 UpdatePanel 中以抑制回发
  • 那么如何更改链接按钮代码和代码隐藏?顺便说一句,谢谢您的澄清。
猜你喜欢
  • 2011-05-03
  • 2018-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-27
  • 2014-02-11
  • 2019-01-06
相关资源
最近更新 更多