Mat*_*ser 3 javascript asp.net jquery jquery-ui sitecore
我在sitecore(它是一个ascx控件)中有一个子布局,它包含一个隐藏字段和一个图像映射.根据单击的图像映射区域,我想设置隐藏字段的值,然后启动回发到服务器.
我的标记如下:
<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" />
Run Code Online (Sandbox Code Playgroud)
我的代码隐藏如下:
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...
}
Run Code Online (Sandbox Code Playgroud)
我添加了虚拟LinkButton作为回发的钩子(创建一个代码隐藏方法来处理回发).
我已经在一个独立的Web应用程序中尝试了这个代码,它似乎工作正常,所以我想知道是否有一些正在发生的事情会导致在回发过程中弄乱隐藏字段的值?
澄清; 回发事件正在服务器上被触发和处理,我在javascript中使用alert()来确认隐藏的字段值是否正确设置.
编辑: 重新标记的问题包括jquery-ui标记.这个问题似乎与以下事实有关:所有这一切都发生在使用jQuery UI库中的$().dialog()方法显示的div中...
正如我在编辑中所提到的,这个问题与隐藏字段(以及其他所有内容)位于div内部有关,该div使用jQuery UI对话框方法进行操作以创建弹出窗口.
我发现这个问题(由javascript修改的HiddenField值没有回发)给了我答案并涉及在对话框方法构造函数中添加一行代码到open:callback.
我打开对话框的JavaScript代码修改如下:
$('#MyDialog').dialog({
closeOnEscape: true,
open: function(event, ui) {
$(this).parent().appendTo("form"); //this line sorted everything!
}
});
Run Code Online (Sandbox Code Playgroud)
引用DanaBenson "我认为根本原因是jQueryUI将对话框附加到BODY标记而不是FORM标记,其中.Net需要它."
| 归档时间: |
|
| 查看次数: |
1924 次 |
| 最近记录: |