0

我想检查我的 ASP.NET 网页上的表单是否有任何更改,我有哪些选择?

我应该检查视图状态是否已更改,还是应该在代码隐藏中创建一个标志,由 Web 控件事件触发,例如 TextChanged for Textboxes 或 SelectedIndexChanged for Dropdownlists?

4

3 回答 3

2

您可以将发送的值存储在属性中。就像是:

Textbox1.Text = <Sent Text>
Textbox1.Attributes.Add "OldText",Textbox1.Text

在回发时,您可以比较:

If Textbox1.Text <> Textbox1.Attributes("OldText") Then
   ' Text is different

您必须为表单中的每个控件执行此操作。当然,您可以编写一个过程以更自动的方式执行此操作,例如遍历所有控件。

于 2010-08-11T11:09:49.577 回答
1

简单的方法:提交该表单,然后在服务器端将发送的值与存储在数据层中的值进行比较。

于 2010-08-11T10:45:36.847 回答
0

为所有控件设置适当的OnChange事件(对于某些控件不同,即 Droplist: OnSelectedIndexChanged)以调用单个form_Changed函数。在该函数中,将全局变量设置为 true。然后在按钮单击处理程序中,检查该值。所有“已更改”事件在按钮单击处理程序之前触发。

ASPX

<asp:CheckBox runat="server" id="loginallowed" Checked="true" OnCheckedChanged="form_Changed" />
<asp:TextBox ID="tbFirst" runat="server" CssClass="form-control required" OnTextChanged="form_Changed"/>

ASPX.CS

private Boolean formChanged = false;
protected void form_Changed(object sender, EventArgs e)
{
    formChanged=true;
}
protected void btn_Click()
{
    if(!formChanged) return;
}
于 2019-11-12T09:47:03.123 回答