2013-04-30 66 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; 
      }