Пользовательские вспомогательные объекты ASP.NET MVC - PullRequest
1 голос
/ 28 августа 2009

Я собираюсь написать тонну помощников для моего приложения.

Для многих из них я хотел бы не расширять HtmlHelper, а вместо этого создать другой вспомогательный класс по двум причинам: 1) иметь возможность писать, скажем, Link.Home и Icon.Edit вместо Html.HomeLink и Html.IconEdit; 2) уметь легко отличать стандартных помощников от пользовательских и определить, где они определены.

Возможно ли это? Как?

Разве это не рекомендуется? почему?

спасибо

Ответы [ 2 ]

4 голосов
/ 28 августа 2009

Ну, «вспомогательные методы» - это просто методы расширения. Если вы хотите иметь возможность писать Link.Home в своих представлениях, вам придется расширить ViewPage и добавить свойство с именем Link типа, скажем, ILink. Интерфейс ILink может быть пустым. Теперь все ваши представления должны наследоваться от MyViewPage, и написание вспомогательных методов становится простой задачей:

public static string Home(this ILink link, string text)
{
     // ...
}
0 голосов
/ 28 августа 2009

Это было бы возможно, если создать подкласс HtmlHelper и вызвать, например, новый класс Link and Icon.

Я бы не рекомендовал его по той простой причине, что в Html.HomeLink и Html.IconEdit четко указано, что делает метод, он выводит Html в виде HomeLink и значка редактирования.

...