2013-11-01 3 views
1

Как создать в mvc-методах, которые имеют другие методы, как показано ниже?Пользовательские методы расширения MVC

@Html.TextBox(m => m.Password).Class("test").Placeholder("Password"); 
+1

Вы не можете сделать это точно так. @ Html.TextBox возвращает MvcHtmlString, поэтому для этого синтаксиса для работы вам нужно будет сделать ваши методы расширения класса и Placeholder MvcHtmlString. Это сложно и неэффективно, потому что им придется разбирать Html. –

+0

У него может быть что-то assim[email protected](). TextBox (x => x.password.) Класс (""). Заполнитель()? – famadori

+0

Элементы управления telerik, например, работают таким образом. – famadori

ответ

0

Я бы принял подход HtmlTags. В частности, реализуйте собственные HTML-методы-помощники, которые не возвращают MvcHtmlString, но объект, который реализует IHtmlString, и предоставляет API для методов цепочки и построения объектной модели за кулисами. Razor вызовет ToString() на объект, когда пришло время рендеринга и не будет кодировать строку благодаря интерфейсу маркера IHtmlString.

Смежные вопросы