2015-04-29 28 views
3

ASP:如何防止回发从asp.net的LinkBut​​ton

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

+0

的可能的复制[禁用上的回传(https://stackoverflow.com/questions/176827/disable-the -postback-on-an-asplinkbutton) – Burgi

回答

3

尝试

OnClientClick="return false;" 

UPDATE:

OnClientClick="showDiffUser();return false;" 

showDiffUser();调用JS-方法

return false;防止回传

+0

我试过,但是当我点击链接时,没有任何反应。 – SearchForKnowledge

+0

谢谢。我遗漏了一些信息并更新了我的问题。我必须通过代码隐藏调用函数,因为我正在执行if/else检查。 – SearchForKnowledge

+0

当你想做一些服务器你需要一个回发或ajax – fubo

2

您只需添加您的jQuery函数调用TH单击按钮后点击页面。当然,如果你抑制点击回传,函数调用永远不会进入页面,也不会执行。

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

OnClientClick="showDiffUser(); return false;" 

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

+0

谢谢你的回应。我需要在更新后的问题中显示服务器端调用。请指教。 – SearchForKnowledge

+0

@SearchForKnowledge,emm,现在有点困惑。那么你想完全禁用回发吗?就目前而言,你希望它有时会发生,但并非总是如此。 – Andrei

+0

所以当页面加载时,'strP'被分配一个值。如果它是空白的,那么执行JQuery,否则不执行。 'strP'是一个服务器端变量。我知道我很困惑这个问题。 – SearchForKnowledge

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> 
+0

需要执行服务器端以检索变量值。这是我的问题,不幸的是:/ – SearchForKnowledge

+0

我编辑过,包含一个AJAX调用,您可以将您的变量传递回去。如果不能,你总是可以将LinkBut​​ton包装到UpdatePanel中以抑制回传 – Matt

+0

那么如何更改linkbutton代码和代码隐藏呢?谢谢btw澄清。 – SearchForKnowledge

相关问题