我的.net应用程序包含母版页和内容页面。在其中一个内容页面上,我有这段代码 -
<script type="text/javascript">
function calendarPicker(strField) {
window.open('Calendar.aspx?field=' + strField, 'calendarPopup', 'width=230,height=170,resizable=no,top=400,left=600');
}
在calendar.aspx上 -
<asp:Calendar ID="Calendar1" Runat="server" OnDayRender="Calendar1_DayRender"
Font-Names="Verdana,Helvetica,Tahoma,Arial" Font-Size="XX-Small" >
<TitleStyle BackColor="#b23837" />
</asp:Calendar>
<input type="hidden" id="control" runat="server" name="control"/>
和代码背后 -
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
control.Value = Request.QueryString("field").ToString()
End Sub
Sub Calendar1_DayRender(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DayRenderEventArgs)
' Clear the link from this day
e.Cell.Controls.Clear()
Dim Link As System.Web.UI.HtmlControls.HtmlGenericControl = New System.Web.UI.HtmlControls.HtmlGenericControl()
Link.TagName = "a"
Link.InnerText = e.Day.DayNumberText
Link.Attributes.Add("href", String.Format("JavaScript:window.opener.document.getElementById('" + control.Value + "').value='{1:d}'; window.close();", Request.QueryString("field"), e.Day.Date))
If e.Day.IsSelected Then
Link.Attributes.Add("style", Me.Calendar1.SelectedDayStyle.ToString())
End If
e.Cell.Controls.Add(Link)
End Sub
这在没有母版页的页面中非常完美,但是在母版页中,日历弹出窗口显示并且没有任何反复发生
答案 0 :(得分:0)
您的身份证不是您认为的身份。服务器上的ID不一定与您在客户端上看到的ID相对应,特别是对于模板化控件和母版页等。
有很多方法可以解决这个问题。您可以通过类引用事物,使用服务器端代码嵌入客户端ID,将ID硬编码到它最终会出现的内容等等。在这种情况下,您可以尝试修改站点以使ID匹配。将其添加到您的web.config:
<system.web>
<pages clientIDMode="Static" />
</system.web>