Я плохо знаком с asp.net mvc. Я надеюсь создавать некоторое управление для многократного использования HTML. У меня есть сложное поле HTML, например:
<div class="Box">
<div class="Top"></div>
<div class="Content">
<div style="padding:10px;">
[CONTENT GOES HERE]
</div>
</div>
<div class="Bottom"></div>
</div>
Ранее использование веб-форм я смог снова использовать это путем наследования Рендерингу переопределения и WebControl. Но как я могу реализовать это в MVC?
Содержание поля могло, конечно, быть что когда-либо. Другие поля, например.
Еще проще всего: использовать UserControl
<%@ Control Language="VB" Inherits="System.Web.Mvc.ViewUserControl" %>
<div class="Box">
<div class="Top"></div>
<div class="Content">
<div style="padding:10px;">
<%= Model.Content %>
</div>
</div>
<div class="Bottom"></div>
</div>
А затем вызвать пользовательский элемент управления с помощью
<% Html.RenderPartial("NiceBox", New with {.Content = "The real content goes here"})%>
Вот пример одного из способов создания его как Метод расширения HtmlHelper:
public static string Box(this HtmlHelper helper, string content)
{
var builder = new StringBuilder();
builder.Append("<div class=\"Box\" .......... );
if (!String.IsNullOrEmpty(content))
{
builder.Append(content)
}
return builder.ToString();
}
По вашему мнению:
<%= Html.Box(contentString) %>
Другие варианты - создать его как частичное представление (.ascx) и передать ему класс ViewModel, содержащий контент, который вы хотите отобразить. Судя по требованию «контент может быть любым», расширение HtmlHelper может быть более гибким для вас.