日期:2014-05-17  浏览次数:20404 次

[js] js给hidden 赋值,后台获取不到的问题 ??
<input type="hidden" id="selected_dt_id" runat="server" />

使用js 给它 赋值;赋值成功了。

可是在服务器端,this.selected_dt_id.value 取到值的总是""

为什么呢,百思不得其解??

------解决方案--------------------
这个控件有缺限(这个是由load事件引起的,他在load前是有值的,一段重新加载,值就丢了,我也碰到过),尤其在与ajax.pro在一起混用的页面中非常明显,你还是用textbox吧,隐藏起来就行了
------解决方案--------------------
用服务器控件
HiddenFiled
------解决方案--------------------
1. 记住.net 触发事件有一次“回调”。
代码一定写到 
if(!this.IsPostback)
{
//代码
}

2.上面不行那么 换成 textbox 试一试!

------解决方案--------------------
这个问题经常碰到。
我在后台,直接用Request.Post["控件Name"]来获取值。
用Request就可以获取到被js赋的值
------解决方案--------------------
if(!IsPostback) 

//代码 

试下,还有如果用了updatepanel的话将此控件放在updatepanel里面
------解决方案--------------------
可以确定的告诉你是可以获取到的:我老是这么干前台

<asp:HiddenField ID="FCount" runat="server" Value=""/>
<asp:HiddenField ID="BNum" runat="server" Value=""/>
<asp:HiddenField ID="FNum" runat="server" Value=""/>
<asp:HiddenField ID="Result" runat="server" Value="" />
赋值
function addResult()
{
var addITemCount=(parseInt(document.getElementById("<%=BNum.ClientID %>").value,10)-1-parseInt(document.getElementById("<%=FCount.ClientID %>").value,10)); 
//alert(document.getElementById("<%=FCount.ClientID %>").value);
for(var i=0;i<addITemCount;i++)
{

var ITemID="ctl00_CPR_Item_"+(1+parseInt(document.getElementById("<%=FCount.ClientID %>").value,10)+i);
var ItemStr=document.getElementById(ITemID).value;
document.getElementById("<%=Result.ClientID %>").value=document.getElementById("<%=Result.ClientID %>").value+ItemStr+"@#$%&@";
}

}


取值:

 string ItemStr = Result.Value;


记住不要在
 if (!IsPostBack)
 {

}
里面写,在这里面是获取不到值的,具体的你去感受吧