在js里修改了文本值,然后在cs中,Click事件中文本值没变,在线等

enaking 2016-03-22 10:55:16
在js里修改了文本值,测试时,也看到文本框值改变了,但就是在cs中,Click事件中文本值没变,还是上一次在cs里赋的值 。这是怎么回事,谢谢大家

最先是在cs里赋值
txtSpell.Text = model.Nine_200_9;

js里的代码:

$("#<%=this.txtSpell.ClientID %>").val(__pinyin.getPinyin($("#<%=this.txtTitle.ClientID%>").val()));


执行了这一段后,也看到了文本的值变了,但是在后面的cs里获取文本时,还是前面cs里给赋的值 ,求解


cs里的代码:

protected void lbtnSave_Click(object sender, EventArgs e)
{
tsgcModel.Nine_200_9 = txtSpell.Text.Trim();
}


...全文
213 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 版主 2016-03-23
  • 打赏
  • 举报
回复
我也建议,给hidden赋值。 因为以前遇到你这种情况也是这么干的。
  • 打赏
  • 举报
回复
通俗的将就是你的val写两遍,一遍是给TextBox,一遍是给Hidden
  • 打赏
  • 举报
回复
你是不是设置了输入框的Enabled为false 能看到不能改,那就是Enabled为false了,你可以用个hidden来接受你的值,然后后台从Hidden取值,因为你设置了Enabled为false,所以后台会从ViewState中恢复数据,也就是你前端怎么改都没用的原因
just59277 2016-03-23
  • 打赏
  • 举报
回复
只能看不能修改,那不是就是个label吗? 为啥要用textbox?
enaking 2016-03-23
  • 打赏
  • 举报
回复
引用 11 楼 qbilbo 的回复:
<asp:TextBox ID="txtSpell" runat="server" style="display:none"></asp:TextBox>
我要的是能看到但不能修改
来自故乡的风 2016-03-22
  • 打赏
  • 举报
回复
楼主应该是在 protected void Page_Load 事件里给文本框赋的初值。虽然js把初值改了,但点击按钮时,在执行lbtnSave_Click方法之前,ASP.NET先执行Page_Load,因此又把初值写回去了。所以需要判断IsPostBack。 具体参见ASP.NET页面生命周期
Poopaye 2016-03-22
  • 打赏
  • 举报
回复
因为js修改这件事发生在世界的另一端,当然不会影响cs的状态 你只能通过form的把js修改的结果提交回来,通过Request获取,再赋给txtSpell.Text,这样才行
changjiangzhibin 2016-03-22
  • 打赏
  • 举报
回复
看看是什么时候改变值的!
来自故乡的风 2016-03-22
  • 打赏
  • 举报
回复
我估计在点击按钮时,又把原来的数值写回去了。 建议----在Page_Load里加上一个判断:

  if (!IsPostBack)
                {
                      return;
                }
qbilbo 2016-03-22
  • 打赏
  • 举报
回复
<asp:TextBox ID="txtSpell" runat="server" style="display:none"></asp:TextBox>
enaking 2016-03-22
  • 打赏
  • 举报
回复
我发现问题原因了,txtSpell控件设成了Enabled设成了False,就获取不到了,改回来就可以了,但是我又需要这个控件不能改,并且我试了设置ReadOnly为True也获取不到, 各位高手有什么办法吗,
enaking 2016-03-22
  • 打赏
  • 举报
回复
也就是js中修改的值 ,在其页面的按钮事件中(cs)中有作用吗?
  • 打赏
  • 举报
回复
我怎么记得开启页面验证的情况下,用js修改服务端控件的状态或值,或导致ViewState验证失败,抛黄页
enaking 2016-03-22
  • 打赏
  • 举报
回复
引用 6 楼 sp1234 的回复:
[quote=引用 5 楼 enaking 的回复:] 但是我Page_Load没任何代码,txtSpell.Text = model.Nine_200_9;是在另一Click事件中赋值的
贴出你的 http 调试器捕获的 Request 信息。[/quote] 没用Request ,保存就在lbtnSave_Click中去获取txtSpell.Text
  • 打赏
  • 举报
回复
引用 5 楼 enaking 的回复:
但是我Page_Load没任何代码,txtSpell.Text = model.Nine_200_9;是在另一Click事件中赋值的
贴出你的 http 调试器捕获的 Request 信息。
enaking 2016-03-22
  • 打赏
  • 举报
回复
引用 4 楼 torontosky 的回复:
楼主应该是在 protected void Page_Load 事件里给文本框赋的初值。虽然js把初值改了,但点击按钮时,在执行lbtnSave_Click方法之前,ASP.NET先执行Page_Load,因此又把初值写回去了。所以需要判断IsPostBack。 具体参见ASP.NET页面生命周期
但是我Page_Load没任何代码,txtSpell.Text = model.Nine_200_9;是在另一Click事件中赋值的

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧