值/文本更改服务器端后,从文本框中获取文本/值

我有一个FormView的数据( DataSource ,数据DataBind ),我填写value='<%# Eval("Name") %>' ,但是当我改变文本TextBox ,然后按更新button我看到相同的值以前,我不能看到我input的新的价值。

我在这里错过了什么?

我的HTML

 <asp:FormView ID="MainFormTemplate" runat="server"> <ItemTemplate> <li class="li_result" runat="server"> <div class="col-3"> <input id="txt_Name" runat="server" value='<%# Eval("Name") %>'> </div> </li> </ItemTemplate> </asp:FormView> <asp:Button id="btn_Update" runat="server" OnClick="btn_Update_Click" Text="Update" /> 

服务器端

 protected void Page_Load(object sender, EventArgs e) { using (DB_MikaDataContext data = new DB_MikaDataContext()) { MainFormTemplate.DataSource = data.File_Projects.Where(x => x.Num_Tik.Equals("12")).ToList(); MainFormTemplate.DataBind(); } } public void btn_Update_Click(object sender, EventArgs e) { //using System.Web.UI.HtmlControls HtmlInputText twt = (HtmlInputText)MainFormTemplate.FindControl("txt_Name"); string text = twt.Value;//i see old value ,not new one that i typed in text box } 

在每一次postback ,您总是从您的数据库中获得旧值。 解决方法是检查页面是否第一次被渲染( !IsPostBack ),然后设置你的MainFormTemplateDataSource否则如果正在加载回应( IsPostBack )的txt_Name得到txt_Name的值是这样的:

 HtmlInputText twt; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { using (DB_MikaDataContext data = new DB_MikaDataContext()) { MainFormTemplate.DataSource = data.File_Projects.Where(x => x.Num_Tik.Equals("12")).ToList(); MainFormTemplate.DataBind(); } } else { twt = MainFormTemplate.FindControl("txt_Name") as HtmlInputText; } } protected void btn_Update_OnClick(object sender, EventArgs e) { string text = twt.Value; // You will get the new value } 

在ASP.Net中,提交页面时,Page_Load事件在button单击事件之前运行。 因此,在click事件查看该值之前,textbox值将被重新填充为其原始值。

如果是这种情况,那么你可以把代码分配给一个if块中的文本框,如下所示:

 if (!IsPostBack) { HtmlInputText twt = (HtmlInputText)MainFormTemplate.FindControl("txt_Name"); string text = twt.Value; } 

希望这可以帮助你

使用Page_Load执行每次postback ,您总是从数据库(?)写入值,并且从浏览器发送的值将丢失(尽pipePage.Request.Form成员仍然存在)。