2

我在我的页面中使用隐藏控件并使用 javascript 为隐藏控件分配值。现在我想在后面的代码中获取隐藏的控制值。它总是返回空值。请帮我解决它。

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
4

6 回答 6

4

您必须设置value隐藏字段的 ,而不是innerHTML

hfproductid.value = prod_id;
于 2013-04-30T05:19:07.783 回答
2

您可以通过以下方式直接设置值

 if (!Page.IsPostBack)
 {
   document.getElementById('<%= Hfproductid.ClientID  %>').value = "100";
 }

然后显示值

alert(document.getElementById('<%= Hfproductid.ClientID  %>').value)
于 2013-04-30T05:18:42.193 回答
1

这是因为您的页面正在回发。

这就是为什么在客户端你可以通过 javascript 获得它的价值,但在服务器端,页面正在回发。

尝试使用IsPostback属性。

if(!Page.IsPostback)

参考:

http://msdn.microsoft.com/en-us/library/system.web.ui.page.ispostback.aspx

于 2013-04-30T05:22:21.580 回答
1
 var hdnvalue= document.getElementById('<%= HiddenValue1.ClientID  %>');
     myvalue=5;
 hdnvalue.val(myvalue);alert(hdnvalue.val());
于 2013-04-30T06:20:39.980 回答
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;
            }
于 2013-04-30T06:23:11.760 回答
0

试试下面的代码:

var hfproductid = document.getElementById('<%= Hfproductid.ClientID  %>');
 prod_id=100;
 hfproductid .val(prod_id);
alert(hfproductid .val());

希望这对你有用

更新:

然后在回发时刷新您的页面:

添加

if(!IsPostback){
String test = Hdftest.value;
}

尝试这个

于 2013-04-30T05:21:33.460 回答