Я пытаюсь создать шаблонный элемент управления с помощью 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(); %>
Примечание. Да, это очень похоже на , когда Telerik создает свои MVC-элементы управления , мне нравится синтаксис.
Вот мой код 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()...
, но у меня все еще были ошибки синтаксиса.
Как я могу это сделать?