访问内容页面元素

时间:2015-09-02 18:19:31

标签: javascript asp.net

我的.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

这在没有母版页的页面中非常完美,但是在母版页中,日历弹出窗口显示并且没有任何反复发生

1 个答案:

答案 0 :(得分:0)

您的身份证不是您认为的身份。服务器上的ID不一定与您在客户端上看到的ID相对应,特别是对于模板化控件和母版页等。

有很多方法可以解决这个问题。您可以通过类引用事物,使用服务器端代码嵌入客户端ID,将ID硬编码到它最终会出现的内容等等。在这种情况下,您可以尝试修改站点以使ID匹配。将其添加到您的web.config:

<system.web>
    <pages clientIDMode="Static" />
</system.web>