Ближайшим функциональным эквивалентом многократно используемых пользовательских элементов управления в стиле WebForms в MVC являются html-помощники. HTML-помощник - это метод, который возвращает некоторую разметку. Рекомендуемый подход состоит в том, чтобы реализовать их в форме методов расширения off HtmlHelper
или какого-либо другого свойства страницы MVC:
public static IHtmlString MyControl(this HtmlHelper helper, string value) {
return new HtmlString("<p>" + value + "</p>");
}
Вы можете напрямую добавить этот метод в проект MVC или добавить его в отдельную библиотеку классов. Единственная вещь, на которую должна ссылаться библиотека классов - это System.Web.Mvc.dll для ссылки HtmlHelper
(может понадобиться и System.Web.dll, если вы используете больше типов).
Вы обычно вызываете их из своего представления следующим образом (в этом примере используется синтаксис Razor, новый в MVC 3)
@Html.MyControl("my value")
Несмотря на то, что поверхностные HTML-помощники генерируют разметку так же, как пользовательские элементы управления, существуют значительные различия. Наиболее важным из них является то, что представления MVC не имеют концепции жизненного цикла страницы WebForms. Это означает, что в отличие от пользовательских элементов управления, HTML-помощники отображаются за один проход. В WebForms нет нескольких этапов, таких как Init, Load, Render и т. Д., Где вы можете подключать события на стороне сервера для взаимодействия с другими элементами управления на странице.
В зависимости от того, о каких конкретно видах событий вы говорите, могут быть подходящие MVC-ориентированные методы для решения вашей задачи. Не могли бы вы предоставить более подробную информацию о том, что вы хотите сделать? Html помощники могут быть довольно мощными. Например, встроенные элементы управления вводом MVC, такие как TextBoxFor
, могут подключать проверку на стороне клиента и т. Д.