2012-01-13 34 views
0

我有这样的代码在Page_Load方法:从代码隐藏填充隐藏字段,然后,将其传递回代码隐藏作为查询字符串ASP/JavaScript的

string orgId = Session["Lineage"].ToString().Split(';')[depth]; 
hidOrg.Value = orgId; 

这aspx页面:

<input type="hidden" id="hidOrg" runat="server" /> 

function doRetrieveData(objVal) { 

    var org = document.getElementById("hidOrg").value; 
    //do stuff 
    window.location.href = "summary.aspx?multiple=" + org 
} 

问题是,我得到一个对象预期错误时分配var org隐藏的“h idOrg“字段。感谢您提前提供任何帮助。

回答

1

ASP.NET根据控件的NamingContainer生成服务器控件的ClientID。 所以你需要将ClientID传递给你的javascript函数。试试这个:

var org = document.getElementById('<%=hidOrg.ClientID%>').value; 

Inline ASP.NET tags

其他方法:

  1. 传递hiddenfield的值给JavaScript函数为好。您需要将隐藏字段直接放在DropDownList/Select后面,并使用nextSibling来获取对它的引用。

    onchange="doRetrieveData(this.value,this.nextSibling.value) 
    
  2. 设置隐藏场的ClientIdModeStatic(如果使用.NET 4.0)

+0

也返回预期的对象。 – 2012-01-13 18:42:18

+0

@todd:从哪里调用'doRetrieveData'?如果它的例子是一个按钮。您可以通过添加代码隐藏的onclick事件来将ID传递给该函数。例如:'BtnRetrieveData.Attributes.Add(“onclick,”doRetrieveData(“+ hidOrg.ClientID +”)“);'http://msdn.microsoft.com/en-us/library/7a9d6h4f.aspx – 2012-01-13 18:50:12

+0