Предоставление пользовательского UserControl ID в отображаемом HTML - PullRequest
4 голосов
/ 16 октября 2008

Когда я использую элемент управления ASP: Calendar и присваиваю ему идентификатор:

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

В рендеринге html это выглядит так:

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

И я могу получить доступ к элементу по идентификатору в javascript следующим образом:

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>

А затем, если я добавлю его на свою страницу, укажите его идентификатор ...

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

Этот идентификатор не отображается нигде в отображаемом HTML. все, что я получаю, это

<div> stuff </div>

Когда я хочу

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

Что я делаю не так?

1 Ответ

12 голосов
/ 16 октября 2008

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...