我正在使用页面中的隐藏控件,并使用javascript为隐藏控件赋值。现在我想在后面的代码中获取隐藏的控件值。它总是返回null值。请帮我解决一下。
My partial code is here.
<asp:HiddenField ID="Hfproductid" runat="server" />
var hfproductid = document.getElementById('<%= Hfproductid.ClientID %>');
prod_id=100;
hfproductid .innerHTML = prod_id;
In My Code Behind
------------------
string invid = HfInvoices.Value; //invid =""; always
答案 0 :(得分:4)
您必须设置隐藏字段的value
,而不是innerHTML
。
hfproductid.value = prod_id;
答案 1 :(得分:2)
您可以通过
直接设置值 if (!Page.IsPostBack)
{
document.getElementById('<%= Hfproductid.ClientID %>').value = "100";
}
然后按
显示值alert(document.getElementById('<%= Hfproductid.ClientID %>').value)
答案 2 :(得分:1)
这是因为您的网页正在回发。
这就是为什么在客户端你可以通过javascript获得它的价值,但在服务器端,页面回发。
尝试使用IsPostback
财产。
if(!Page.IsPostback)
<强>参见:强>
http://msdn.microsoft.com/en-us/library/system.web.ui.page.ispostback.aspx
答案 3 :(得分:1)
var hdnvalue= document.getElementById('<%= HiddenValue1.ClientID %>');
myvalue=5;
hdnvalue.val(myvalue);alert(hdnvalue.val());
答案 4 :(得分:0)
尝试以下代码:
var hfproductid = document.getElementById('<%= Hfproductid.ClientID %>');
prod_id=100;
hfproductid .val(prod_id);
alert(hfproductid .val());
希望这对你有用
更新:
然后在回帖后,您的页面正在刷新:
添加
if(!IsPostback){
String test = Hdftest.value;
}
试试这个
答案 5 :(得分:0)
前面提到的juanreyesv是绝对正确的,如果你用javascript更改值,你必须将信息发回服务器,如果不是,你不会看到“代码背后”的变化强>
为此,您必须使用
在客户端本身强制回发事件 __doPostBack();
所以你的代码将是,
var hfproductid = document.getElementById('<%= Hfproductid.ClientID %>');
var prod_id = 100;
hfproductid.value = prod_id;
__doPostBack();
然后在Page ispostback中,您将获得所需的值
if(IsPostback){
string invid = Hfproductid.Value;
}
上面的代码可以正常工作,但由于它是强制回发而没有任何条件,它会被连续触发,以避免你必须采取1个隐藏字段并将其用作标志来检查是否有任何值然后不要解雇
_doPostBack()
所以你的最终代码应该是
if (document.getElementById('<%= hdncheck.ClientID %>').value == "Y") {
var hfproductid = document.getElementById('<%= Hfproductid.ClientID %>');
var prod_id = 100;
hfproductid.value = prod_id;
document.getElementById('<%= hdncheck.ClientID %>').value = "N";
__doPostBack();
}
在服务器端
if (!IsPostBack)
{
hdncheck.Value = "Y";
}
if (IsPostBack)
{
string invid = Hfproductid.Value;
}