在asp.net中读取隐藏的控件值

时间:2013-04-30 05:13:25

标签: c# javascript asp.net c#-4.0

我正在使用页面中的隐藏控件,并使用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

6 个答案:

答案 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;
            }