【问题标题】:Check for changes in a ASP.net form检查 ASP.net 表单中的更改
【发布时间】:2010-08-11 10:31:55
【问题描述】:

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

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

【问题讨论】:

  • 我需要在提交表单时检查是否有任何更改。

标签: .net change-tracking


【解决方案1】:

您可以将发送的值存储在属性中。比如:

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

在回发时,您可以比较:

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

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

【讨论】:

  • 也许这对我来说是最好的解决方案,我将弄清楚如何将这个解决方案实施到下拉列表。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    为所有控件设置正确的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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-20
      相关资源
      最近更新 更多