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

Rya*_*yan 4 javascript asp.net 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>
Run Code Online (Sandbox Code Playgroud)

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

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

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

<div> stuff </div>

当我想要的时候

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

我究竟做错了什么?

Haa*_*ked 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>
Run Code Online (Sandbox Code Playgroud)