我的应用程序中有多个asp:buttons
,每当它们被单击时,它们都会重新加载页面。在仍允许按钮功能正常工作的同时,如何解决此问题?除了页面重新加载时看起来很奇怪之外,我还有一个标签样式导航部分,该部分在每次单击按钮时默认回到第一个标签。这是一个按钮及其附带的C#代码的示例。
HTML / ASPX
<asp:Button ID="uxRequestFEMAResponseBtnT3" runat="server" Text="Generate Interim Response Email" OnClick="uxRequestFEMAResponseBtnT3_Click" />
<asp:TextBox ID="uxFEMARequestDateTxtBox" runat="server" style="color: red; text-align:center;"></asp:TextBox>
C#
protected void uxRequestFEMAResponseBtnT3_Click(object sender, EventArgs e)
{
String today = DateTime.Now.ToString("dd/MM/yyyy");
uxFEMARequestDateTxtBox.Text = today;
}
到目前为止我已经尝试过:
我尝试了多种修复程序来解决此问题。最初,我认为可以通过将整个主体部分(包括所有按钮)包装在<asp:UpdatePanel ID="UpdatePanel1" runat="server">
...中来解决此问题,但这没有用。其次,我尝试仅在AutoPostBack="False"
标记内添加<asp:Button..>
,但没有任何变化。然后,我将所有asp: buttons
更改为具有相同<input type="button"...>
事件的简单html onClick
。这停止了重新加载,但是功能(将DateTime添加到C#中的文本框)不再起作用。我已经看过几种可能的jQuery解决方案,但是我不确定这是否可以解决我的问题。我对ASP.NET还是很陌生,但这似乎是一个常见问题,任何使用Web.Controls.UI
按钮的人都会遇到。关于如何解决这个问题有什么建议吗?
答案 0 :(得分:1)
几个问题
您可以使用jQuery。它一定会满足您的要求。但是您必须编写一个Web方法而不是按钮单击事件。
Jquery步骤
添加jquery文件并将类添加到按钮声明
注册按钮点击事件
$('.button-class').onClick(function()){ //call to web method });
在服务器端创建一个包含业务逻辑的Web方法
调用网络方法
$.ajax({ type: 'POST', url: 'PageName.aspx/MethodName', contentType: "application/json; charset=utf-8", dataType: "json", success: function (msg) { if (msg.d) { //set your values to the text box $('.textbox-classname').val(msg.d.returningvalue); } }, error: function () { alert("Error! Try again..."); } });
答案 1 :(得分:1)
为此目的使用updatepanels ...它们将不会刷新页面,而仍然会激发您的点击事件