我想检查ASP.NET网页上的表单是否有任何更改,我有哪些选择?
我应该检查视图状态是否已更改,或者是否应该在代码隐藏中创建一个标志,由Web控件事件触发,例如TextChanged for Textboxes或SelectedIndexChanged for Dropdownlists?
答案 0 :(得分:2)
您可以将发送的值存储在属性中。类似的东西:
Textbox1.Text = <Sent Text>
Textbox1.Attributes.Add "OldText",Textbox1.Text
在回发时,您可以比较:
If Textbox1.Text <> Textbox1.Attributes("OldText") Then
' Text is different
您必须为表单中的每个控件执行此操作。当然,您可以编写一个程序来以更自动的方式执行此操作,例如遍历所有控件。
答案 1 :(得分:1)
简单方法:提交该表单,并在服务器端将发送的值与存储在数据层中的值进行比较。
答案 2 :(得分:0)
为所有控件设置适当的OnChange
事件(某些控件有所不同,即Droplist:OnSelectedIndexChanged
),以调用单个form_Changed
函数。在该函数中,将全局变量设置为true。然后在“按钮单击处理程序”中,检查该值。所有“已更改”事件都会在按钮Click处理程序之前触发。
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;
}