javascript - asp :HiddenField fails to be persisted across postback 的 jQuery 更新

标签 javascript jquery asp.net jquery-ui sitecore

我在 sitecore 中有一个子布局(它是一个 ascx 控件),其中包含一个隐藏字段和一个图像映射。根据被点击的图像 map 的区域,我想设置隐藏字段的值,然后向服务器发起回发。

我的标记如下:

<script type="text/javascript">
function SetRegion(regionName) {
    $('#<%=hdnRegion.ClientID%>').val(regionName);
    __doPostBack('<%=lnkRedirectButton.UniqueID%>', '');
}
</script>

<img src="/Images/Interface/Map-Background.png" usemap="#regionMapView" class="map" />
<map id="regionMapView" name="regionMapView">
    <area id="x" href="javascript:SetRegion('x')" shape="poly" coords=",,,," />
    <area id="y" href="javascript:SetRegion('y')" shape="poly" coords=",,,," />
    <area id="z" href="javascript:SetRegion('z')" shape="poly" coords=",,,," />
</map>

<asp:HiddenField ID="hdnRegion" runat="server" />
<asp:LinkButton ID="lnkRedirectButton" onclick="lnkRedirectButton_Click" runat="server" />

我的代码隐藏如下:

    protected void lnkRedirectButton_Click(object sender, EventArgs e)
    {
        string region = hdnRegion.Value; //at this point, I expect hdnRegion.Value to be "x" "y" or "z" but it's always coming back empty :-(
        //do stuff...
    }

我添加了虚拟 LinkBut​​ton 用作回发的 Hook (以创建代码隐藏方法来处理回发)。

我已经在独立的网络应用程序中尝试过这段代码,它似乎工作正常,所以我想知道 sitecore 是否发生了什么事情,在回发过程中弄乱了隐藏字段的值?

澄清;回发事件被触发并在服务器上正常处理,我在 javascript 中使用 alert() 来确认隐藏字段值设置正确。

编辑: 重新标记问题以包含 jquery-ui 标记。 这个问题似乎与所有这些都发生在 div 内部有关,该 div 使用 jQuery UI 库中的 $().dialog() 方法显示...

最佳答案

正如我在编辑中提到的,这个问题与隐藏字段(以及其他所有内容)位于 div 中有关,该 div 使用 jQuery UI 对话框方法进行操作以创建弹出窗口。

我发现了这个问题 ( HiddenField value modified by javascript is not posted back ) 这给了我答案,并涉及向 open: 对话框方法构造函数中的回调添加一行代码。

我的用于打开对话框的 JavaScript 代码修改如下:

$('#MyDialog').dialog({
    closeOnEscape: true,
    open: function(event, ui) {
        $(this).parent().appendTo("form"); //this line sorted everything!
    }
}); 

引用DanaBenson “我相信根本原因是 jQueryUI 将对话框附加到 BODY 标签而不是 FORM 标签,而 .Net 需要它。”

关于javascript - asp :HiddenField fails to be persisted across postback 的 jQuery 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5651905/

相关文章:

c# - 正则表达式特定日期格式

javascript - 如何使用 "next"按钮选择 Bootstrap 选项卡。我遵循了其他答案但没有工作

javascript - map 颜色模式 "random"适用于 Google 地球但不适用于 Google map

javascript - 使用 getElementById 禁用 Ext.Button

javascript - jQuery offset() 在 Safari/Chrome iOS 中不起作用

jQuery 数据表 : how to change pagination active color?

asp.net - 如果不使用代码隐藏,aspx源代码是否会暴露给网站访问者?

javascript - jquery函数重载

javascript - Chrome 控制台行为中的双美元 $$() 与美元符号 $()

javascript - jQuery 函数冲突