为自定义UserControl提供呈现HTML中的ID

时间:2008-10-16 19:31:12

标签: asp.net javascript user-controls

当我使用ASP:Calendar控件时,给它一个ID:

<asp:Calendar runat="server" ID="MyCal" />

在渲染的html中看起来像这样:

<table id="NameMangled_MyCal"... />

我可以在javascript中通过ID访问元素,如下所示:

var cal= document.getElementById("<%= MyCal.ClientID%>")

然而,当我制作具有日历的自定义用户控件时:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WeeklyEventsCalendar.ascx.cs"
    Inherits="WeeklyEventsCalendar" %>

<div>
    <asp:Calendar runat="server" ID="InnerCal" Width="100%" OnDayRender="RenderCell" OnVisibleMonthChanged="ChangeMonth" Height="480px" />
</div>

然后在我将其添加到我的页面时给它一个ID ...

<mvs:WeeklyEventsCalendar ID="WeeklyCal" runat="server" />

该ID不会显示在呈现的HTML中的任何位置。我得到的只是

<div> stuff </div>

我想要的时候

<div id="NameMangled_WeeklyCal"> stuff <div>

我做错了什么?

1 个答案:

答案 0 :(得分:12)

UserControls只呈现其内容,没有别的。你能做的是

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WeeklyEventsCalendar.ascx.cs"
    Inherits="WeeklyEventsCalendar" %>

<div id="<%= this.ControlID %>">
    <asp:Calendar runat="server" ID="InnerCal" Width="100%" OnDayRender="RenderCell" OnVisibleMonthChanged="ChangeMonth" Height="480px" />
</div>