【问题标题】:populating hidden field from codebehind, then, passing it back to codebehind as QueryString ASP/javascript从代码隐藏填充隐藏字段,然后将其作为 QueryString ASP/javascript 传递回代码隐藏
【发布时间】:2012-01-30 05:35:41
【问题描述】:

我在 page_load 方法中有这段代码:

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 分配隐藏的“hidOrg”字段的值时,我遇到了对象预期错误。感谢您提前提供任何帮助。

【问题讨论】:

    标签: javascript asp.net code-behind


    【解决方案1】:

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

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

    Inline ASP.NET tags

    其他方法:

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

      onchange="doRetrieveData(this.value,this.nextSibling.value)
      
    2. 将隐藏字段的ClientIdMode 设置为Static(如果使用.NET 4.0)

    【讨论】:

    • 也返回预期的对象。
    • @todd:你从哪里打电话给doRetrieveData?例如,如果它是一个按钮。您可以通过添加代码隐藏中的 onclick 事件将 ID 传递给函数。例如:BtnRetrieveData.Attributes.Add("onclick,"doRetrieveData("+ hidOrg.ClientID +")");msdn.microsoft.com/en-us/library/7a9d6h4f.aspx
    • 然后试试我的代码隐藏方法。或者将您的隐藏字段放在 DropDownList 旁边并调用 doRetrieveData(this.nextSibling.value) 以直接从 DropDownList 的客户端 onchange 事件传递隐藏字段值。 w3schools.com/dom/prop_node_nextsibling.asp
    • 如果使用 .NET 4.0,则将隐藏字段的 ClientIDMode 设置为静态。
    【解决方案2】:
    Response.Redirect("~/summary.aspx?multiple=" + hidOrg.Value);
    

    【讨论】:

    • 返回,“Microsoft JScript 运行时错误:'hidOrg' 未定义”
    猜你喜欢
    • 2014-09-09
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-30
    相关资源
    最近更新 更多