2013-04-30 86 views
2

我在页面中使用隐藏控件,并使用javascript为隐藏控件赋值。现在我想在后面的代码中获得隐藏的控制值。它总是返回空值。请帮我解决它。通过阅读asp.net中隐藏的控制值

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

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

如果改变如果没有,你将不会看到“后面的代码”的变化 – juanreyesv 2013-04-30 05:15:34

回答

2

您可以直接设置值,然后通过

alert(document.getElementById('<%= Hfproductid.ClientID %>').value) 
+0

什么是document.getElementById('<%= Hfproductid.ClientID%>')。value =“10 0“应该在服务器上做? – Stilgar 2013-04-30 08:15:27

4

显示值,则必须设置隐藏字段的value,不innerHTML

hfproductid.value = prod_id; 
+0

我已经设置了value属性。它不起作用 – user2176150 2013-04-30 05:21:11

+0

@ user2176150检查您的页面源以检查是否生成隐藏字段。也许你的代码隐藏使它可见=“假”。 – 2013-04-30 05:24:12

+0

尝试使用if(!IsPostback) – 2013-04-30 05:24:44

0

试试下面的代码:

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

希望这会为你工作

更新时间:

然后在回传你的页面被刷新:

添加

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

试试这个

+0

已成功分配隐藏字段值。但在c#页面中,我无法读取此值。 – user2176150 2013-04-30 05:22:36

+0

@ user2176150我已经更新了答案,请查看 – 2013-04-30 05:25:12

1

这是因为您的页面发回。

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

尝试使用IsPostback属性。

if(!Page.IsPostback) 

参见:

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

+0

我已经在使用这个了。如果(!Page.IsPostBack)。 – user2176150 2013-04-30 05:26:07

+1

在您的问题中没有提到 – Freelancer 2013-04-30 05:26:44

+1

@ user2176150在您检查隐藏字段值的位置发布您的方法..以便我们可以向您建议您的答案 – 2013-04-30 05:30:22

1
var hdnvalue= document.getElementById('<%= HiddenValue1.ClientID %>'); 
    myvalue=5; 
hdnvalue.val(myvalue);alert(hdnvalue.val()); 
0

什么juanreyesv前面提到的是绝对正确的,如果你改变你所拥有的信息发送回服务器的JavaScript值,如果不是,你不会看到“后面的代码”的变化

对于您必须使用强制在客户方本身塔回发事件

__doPostBack(); 

所以你的代码会,

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

然后在页面的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; 
      }