Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 读取asp.net中的隐藏控件值_C#_Javascript_Asp.net_C# 4.0 - Fatal编程技术网

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

C# 读取asp.net中的隐藏控件值,c#,javascript,asp.net,c#-4.0,C#,Javascript,Asp.net,C# 4.0,我在页面中使用隐藏控件,并使用javascript为隐藏控件赋值。现在我想在代码隐藏中获取隐藏的控件值。它总是返回空值。请帮我解决它 My partial code is here. <asp:HiddenField ID="Hfproductid" runat="server" /> var hfproductid = document.getElementById('<%= Hfproductid.ClientID %>'); prod_id=100; h

我在页面中使用隐藏控件,并使用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
我的部分代码在这里。
var hfproductid=document.getElementById(“”);
产品id=100;
hfproductid.innerHTML=prod_id;
在我的代码背后
------------------
字符串invid=HfInvoices.Value//因维德=”;总是

您可以通过

 if (!Page.IsPostBack)
 {
   document.getElementById('<%= Hfproductid.ClientID  %>').value = "100";
 }
if(!Page.IsPostBack)
{
document.getElementById(“”).value=“100”;
}
然后通过以下方式显示值:

alert(document.getElementById('<%= Hfproductid.ClientID  %>').value)
警报(document.getElementById(“”).value)

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

hfproductid.value = prod_id;

请尝试以下代码:

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

试试这个

这是因为你的页面正在发回

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

尝试使用
IsPostback
属性

if(!Page.IsPostback)
参考:

var hdnvalue=document.getElementById(“”);
myvalue=5;
hdnvalue.val(myvalue);警报(hdnvalue.val());

juanreyesv前面提到的绝对正确,如果您使用javascript更改值,则必须将信息回发到服务器,否则您将无法看到“代码隐藏”中的更改。

为此,您必须使用

 __doPostBack();
所以你的代码是

var hfproductid = document.getElementById('<%= Hfproductid.ClientID  %>');
                var prod_id = 100;
                hfproductid.value = prod_id;
               __doPostBack();
上面的代码可以正常工作,但是由于它是一个没有任何条件的强制回发,它将被连续激发,以避免您必须使用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();

            }

如果使用javascript更改值,则必须将信息发回服务器,否则将无法看到成功分配的“代码隐藏”隐藏字段值中的更改。但在c#page中,我无法读取此值。@user2176150检查页面源以检查是否生成了隐藏字段。可能您的codebehind使其可见。
Visible=“False”
。尝试使用if(!IsPostback)@user2176150在检查隐藏字段值的位置发布您的方法。。因此,我们可以向您建议正确答案document.getElementById(“”).value=“100”应该在服务器上执行什么操作?
if(IsPostback){
string invid = Hfproductid.Value;
}
_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;
            }