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

时间:2022-11-15 14:38:02
在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();
}


16 个解决方案

#1


我估计在点击按钮时,又把原来的数值写回去了。

建议----在Page_Load里加上一个判断:


  if (!IsPostBack)
                {
                      return;
                }

#2


看看是什么时候改变值的!

#3


因为js修改这件事发生在世界的另一端,当然不会影响cs的状态
你只能通过form的把js修改的结果提交回来,通过Request获取,再赋给txtSpell.Text,这样才行

#4


楼主应该是在 protected void Page_Load 事件里给文本框赋的初值。虽然js把初值改了,但点击按钮时,在执行lbtnSave_Click方法之前,ASP.NET先执行Page_Load,因此又把初值写回去了。所以需要判断IsPostBack。

具体参见 ASP.NET页面生命周期

#5


引用 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事件中赋值的

#6


引用 5 楼 enaking 的回复:
但是我Page_Load没任何代码,txtSpell.Text = model.Nine_200_9;是在另一Click事件中赋值的


贴出你的 http 调试器捕获的 Request 信息。

#7


引用 6 楼 sp1234 的回复:
Quote: 引用 5 楼 enaking 的回复:

但是我Page_Load没任何代码,txtSpell.Text = model.Nine_200_9;是在另一Click事件中赋值的


贴出你的 http 调试器捕获的 Request 信息。


没用Request ,保存就在lbtnSave_Click中去获取txtSpell.Text 

#8


我怎么记得开启页面验证的情况下,用js修改服务端控件的状态或值,或导致ViewState验证失败,抛黄页

#9


也就是js中修改的值 ,在其页面的按钮事件中(cs)中有作用吗?

#10


我发现问题原因了,txtSpell控件设成了Enabled设成了False,就获取不到了,改回来就可以了,但是我又需要这个控件不能改,并且我试了设置ReadOnly为True也获取不到, 各位高手有什么办法吗,

#11


<asp:TextBox ID="txtSpell" runat="server"  style="display:none"></asp:TextBox>

#12


引用 11 楼 qbilbo 的回复:
<asp:TextBox ID="txtSpell" runat="server"  style="display:none"></asp:TextBox>


我要的是能看到但不能修改

#13


只能看不能修改,那不是就是个label吗? 为啥要用textbox?

#14


你是不是设置了输入框的Enabled为false
能看到不能改,那就是Enabled为false了,你可以用个 hidden来接受你的值,然后后台从Hidden取值,因为你设置了Enabled为false,所以后台会从ViewState中恢复数据,也就是你前端怎么改都没用的原因

#15


通俗的将就是你的val写两遍,一遍是给TextBox,一遍是给Hidden

#16


我也建议,给hidden赋值。
因为以前遇到你这种情况也是这么干的。

#1


我估计在点击按钮时,又把原来的数值写回去了。

建议----在Page_Load里加上一个判断:


  if (!IsPostBack)
                {
                      return;
                }

#2


看看是什么时候改变值的!

#3


因为js修改这件事发生在世界的另一端,当然不会影响cs的状态
你只能通过form的把js修改的结果提交回来,通过Request获取,再赋给txtSpell.Text,这样才行

#4


楼主应该是在 protected void Page_Load 事件里给文本框赋的初值。虽然js把初值改了,但点击按钮时,在执行lbtnSave_Click方法之前,ASP.NET先执行Page_Load,因此又把初值写回去了。所以需要判断IsPostBack。

具体参见 ASP.NET页面生命周期

#5


引用 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事件中赋值的

#6


引用 5 楼 enaking 的回复:
但是我Page_Load没任何代码,txtSpell.Text = model.Nine_200_9;是在另一Click事件中赋值的


贴出你的 http 调试器捕获的 Request 信息。

#7


引用 6 楼 sp1234 的回复:
Quote: 引用 5 楼 enaking 的回复:

但是我Page_Load没任何代码,txtSpell.Text = model.Nine_200_9;是在另一Click事件中赋值的


贴出你的 http 调试器捕获的 Request 信息。


没用Request ,保存就在lbtnSave_Click中去获取txtSpell.Text 

#8


我怎么记得开启页面验证的情况下,用js修改服务端控件的状态或值,或导致ViewState验证失败,抛黄页

#9


也就是js中修改的值 ,在其页面的按钮事件中(cs)中有作用吗?

#10


我发现问题原因了,txtSpell控件设成了Enabled设成了False,就获取不到了,改回来就可以了,但是我又需要这个控件不能改,并且我试了设置ReadOnly为True也获取不到, 各位高手有什么办法吗,

#11


<asp:TextBox ID="txtSpell" runat="server"  style="display:none"></asp:TextBox>

#12


引用 11 楼 qbilbo 的回复:
<asp:TextBox ID="txtSpell" runat="server"  style="display:none"></asp:TextBox>


我要的是能看到但不能修改

#13


只能看不能修改,那不是就是个label吗? 为啥要用textbox?

#14


你是不是设置了输入框的Enabled为false
能看到不能改,那就是Enabled为false了,你可以用个 hidden来接受你的值,然后后台从Hidden取值,因为你设置了Enabled为false,所以后台会从ViewState中恢复数据,也就是你前端怎么改都没用的原因

#15


通俗的将就是你的val写两遍,一遍是给TextBox,一遍是给Hidden

#16


我也建议,给hidden赋值。
因为以前遇到你这种情况也是这么干的。