【发布时间】:2012-11-29 16:28:26
【问题描述】:
在我的 ASCX 中,我有一个定义为 <asp:HiddenField ID="hdnNewAsset" runat="server" /> 的 asp.net 隐藏字段。
在后面的代码中我有以下代码:
protected void Page_Load(object sender, EventArgs e)
{
_service = new ArticleDataService(PortalId);
if (!IsPostBack)
{
string rawId = Request[ArticleQueryParams.ArticleId];
DisplayArticleDetails(rawId);
}
if (hdnNewAsset.Value.Trim() != string.Empty)
ProcessNewAsset();
}
现在,在我的前端,我有一个 javascript 函数来响应事件并设置隐藏字段并触发回发:
function assetSelected(assetGuid) {
$('input[id*="hdnNewAsset"]').val(assetGuid);
__doPostBack()
}
发生的事情是我的隐藏字段正在标记中设置(chrome 显示 [
<input type="hidden" name="dnn$ctr466$Main$ctl00$hdnNewAsset" id="dnn_ctr466_Main_ctl00_hdnNewAsset" value="98d88e72-088c-40a4-9022-565a53dc33c4">
] 为 $('input[id*="hdnNewAsset"]'))。
但是,当回发发生时,hdnNewAsset.Value 是一个空字符串。
更令人费解的是Page_Load开头Request.Params["dnn$ctr466$Main$ctl00$hdnNewAsset"]显示98d88e72-088c-40a4-9022-565a53dc33c4,而在回发之后我的隐藏字段具有相同的值(因此隐藏字段在回发中持续存在),但我无法访问这个值来自hdnNewAsset.Value。
谁能看到我做错了什么?
【问题讨论】:
-
分配
hdnNewAsset的代码在哪里?它受IsPostBackcheck 保护吗? -
您在回发周期的哪个时间点尝试访问该字段的值?如果您在加载视图状态之前执行此操作,那么您将得到一个空字符串。另外,你用的是什么浏览器?我在 Chrome 中看到过类似的问题(但仅在 Chrome 中)。尝试其他浏览器,看看是否得到相同的结果。
-
@Kami:没有设置值,我只是通过我在前端发布的 javascript 来设置
-
@BrianDriscoll,我正在尝试访问它在
Page_Load中显示的变量。开头Page_Load(已验证通过手表)hdnNewAsset.Value为空