为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 textbox.Text 返回一个空字符串?

为什么 textbox.Text 返回一个空字符串?

C#
慕姐8265434 2022-11-13 14:47:48
首先让我以我知道这个问题已经被问过很多次的事实作为序言。我已尝试实施我已阅读的所有内容,但尚未解决我的问题。我在 GridView 中显示了一个购物车,我正在尝试使更新功能正常工作。单击编辑(在有问题的行上)并更改文本框中的值,然后单击更新后,我总是返回一个空字符串。我已经阅读了无数关于它是 PostBack 问题的帖子,但是我已经将我的 DataBind 方法封装在一个中,if(!Page.IsPostBack){}所以我不相信这是我的问题。这些是我的 CodeFile 中的相关方法:protected void Page_Load(object sender, EventArgs e){    if (Session["thisCart"] == null)    {        Session["thisCart"] = new ShoppingCart();    }    thisCart = (ShoppingCart)Session["thisCart"];    if (!Page.IsPostBack)    {        FillData();    }}private void FillData(){    gvShoppingCart.DataSource = thisCart.Items;    gvShoppingCart.DataBind();    if (thisCart.Items.Count == 0)    {        lblGrandTotal.Visible = false;    }    else    {        lblGrandTotal.Text = string.Format("Grand Total = {0,19:C}", thisCart.GrandTotal);        lblGrandTotal.Visible = true;    }}protected void gvShoppingCart_RowUpdating(object sender, GridViewUpdateEventArgs e){    TextBox txtQuantity = (TextBox)gvShoppingCart.Rows[e.RowIndex].Cells[3].Controls[0];    int quantity = Int32.Parse(txtQuantity.Text);    thisCart.Update(e.RowIndex, quantity);    gvShoppingCart.EditIndex = -1;    FillData();        }我通常很擅长寻找答案,但是这个让我难住了。单击更新后站点崩溃,因为返回的值int quantity = Int32.Parse(txtQuantity.Text);是“”,显然你不能从中解析一个 int。至于可能重复的“ASP.NET验证错误消息以更改标签文本”的标签。我找不到任何指向答案方向的东西。
查看完整描述

2 回答

?
杨魅力

TA贡献1811条经验 获得超5个赞

因为我刚刚学习 ASP.net 和 C#,所以要弄清楚这是一个非常痛苦的问题。

当我能够在较早的任务中完成这项工作时,我并没有使用母版页,但我使用了这个项目。问题在于我<form runat="server">在母版页中使用了一个标签。<form runat="server">由于每页只能有一个标签,因此我的 GridView 没有包含在一个标签中。一旦我删除了母版页并<form runat="server">在 GridView 周围添加了包装器,一切都按预期工作。


查看完整回答
反对 回复 2022-11-13
?
湖上湖

TA贡献2003条经验 获得超2个赞

来电。FillData()Page_PreInit否则,当 ASP.Net 运行时恢复网格的 ViewState 时,包括新的文本框数据,还没有地方可以放置它。请记住,每个服务器事件都使用页面类的全新实例,并且必须从头开始重建整个页面。



查看完整回答
反对 回复 2022-11-13
  • 2 回答
  • 0 关注
  • 102 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信