加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 为什么ASP.NET在更改内容时提交TextBox控件的原始值?

发布时间:2020-12-15 18:12:52 所属栏目:百科 来源:网络整理
导读:我有一个Web表单,允许用户使用提交按钮修改某些字段中的数据(主要是TextBox控件,带有几个CheckBox,DropDownList和一个RadioButtonList控件)以保存更改.很标准的东西.问题是,我需要跟踪他们修改的字段.所以我使用ASP.NET HiddenField控件来存储原始值,然后在
我有一个Web表单,允许用户使用提交按钮修改某些字段中的数据(主要是TextBox控件,带有几个CheckBox,DropDownList和一个RadioButtonList控件)以保存更改.很标准的东西.问题是,我需要跟踪他们修改的字段.所以我使用ASP.NET HiddenField控件来存储原始值,然后在提交时将其与相应的TextBox(例如)控件的值进行比较,以确定哪些字段已被修改.

但是,当我提交表单并进行比较时,后面代码中TextBox控件的值仍然反映原始值,即使我已经更改了TextBox的内容,因此它没有注册更改.以下是我的ASP.NET表单中的一组TextBox / HiddenField配对(在本例中为last,first,middle name)的示例:

<div id="editName" class="editField" style="display: none">
    <asp:TextBox ID="tbxLName" runat="server" class="editable"></asp:TextBox>,<asp:TextBox ID="tbxFName" runat="server" class="editable"></asp:TextBox>
    <asp:TextBox ID="tbxMName" runat="server" class="editable"></asp:TextBox>
    <asp:HiddenField ID="hdnLName" runat="server" />
    <asp:HiddenField ID="hdnFName" runat="server" />
    <asp:HiddenField ID="hdnMName" runat="server" />
</div>

我在后面的代码中的PageLoad上设置所有这些控件的原始值(TextBox控件的“.Text”,HiddenField控件的“.Value”).

这是我在提交表单时进行比较的示例(如果值不同,我将字段名称,旧值和新值添加到List< string>对象):

if (tbxLName.Text != hdnLName.Value)
{
    changes.Add("ConsumerLastName");
    oldVal.Add(hdnLName.Value);
    newVal.Add(tbxLName.Text);
}

但是当我在TextBox控件中输入一个新值并单击Submit时:

然后逐步调试调试器中的代码,它告诉我控件的值仍然是旧值:

为什么比较发生在TextBox的原始值上,即使单击提交按钮时存在新值?

更新:@David获得了这个功劳,即使他没有将其作为答案发布 – 我忘记在IsPostBack的支票中附上预先填充控件原始值的方法;我真的应该知道的更好,我已经做了很长一段时间了!

解决方法

您是否在Page_Load中检查IsPostback,以便不覆盖在回发中发送的值?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读