Я пытаюсь создать шаблонный элемент управления с помощью Asp.Net MVC. Под шаблонного контролем, я имею в виду элемент управления, который принимает в качестве входных данных разметки, как так:Как создать шаблонный элемент управления с помощью Asp.Net MVC?
<% Html.PanelWithHeader()
.HeaderTitle("My Header")
.Content(() =>
{ %>
<!-- ul used for no particular reason -->
<ul>
<li>A sample</li>
<li>A second item</li>
</ul>
<% }).Render(); %>
Примечание: Да, это очень похоже на how Telerik creates its MVC controls, мне нравится синтаксис.
Вот мой PanelWithHeader код:
// Extend the HtmlHelper
public static PanelWithHeaderControl PanelWithHeader(this HtmlHelper helper)
{
return new PanelWithHeaderControl();
}
public class PanelWithHeaderControl
{
private string headerTitle;
private Action getContentTemplateHandler;
public PanelWithHeaderControl HeaderTitle(string headerTitle)
{
this.headerTitle = headerTitle;
return this;
}
public PanelWithHeaderControl Content(Action getContentTemplateHandler)
{
this.getContentTemplateHandler = getContentTemplateHandler;
return this;
}
public void Render()
{
// display headerTitle as <div class="header">headerTitle</div>
getContentTemplateHandler();
}
}
Это показывает ul
, но я понятия не имею, как отображать пользовательский код в моем методе визуализации.
Я пробовал использовать HtmlHelper без успеха. Я также попытался переопределить метод ToString, чтобы иметь возможность использовать синтаксис <%=Html.PanelWithHeader()...
, но у меня остались синтаксические ошибки.
Как я могу это сделать?
Это будет работать, но некрасиво и требует, чтобы пользователь не забудьте позвонить и другое. – mbillard