Бритва и создание помощников для пользователей: HTML. * - PullRequest
0 голосов
/ 24 мая 2011

У меня есть приложение ASP.NET MVC3 (с Razor), где я позволяю пользователям указывать компоненты для представления - например, макет или частичные компоненты, которые я использую для визуализации содержимого. (Например, у меня есть модель с Title и Description, и я разрешаю пользователям указывать частичное CSHTML в определенном каталоге, который я использую для визуализации данных.)

Проблема, с которой я сталкиваюсь, заключается в изоляции и простоте использования для моих пользователей. Например, в настоящее время они могут писать код в своих частях, например:

@Html.ActionLink("edit", "Edit", "Content", new { Id = Model.Id }, null)

Вместо этого я хотел бы, чтобы они написали что-то вроде:

@SomeHelper.EditLinkFor(Model.Id)

Прямо сейчас, все мои контроллеры являются частью общедоступного API. Пользователи должны знать имена контроллеров и действий, чтобы указывать определенные ссылки (например, редактировать ссылку). Я хотел бы предоставить упрощенный API.

Но как мне это сделать? Если я просто создаю класс SomeHelper, попытка вызвать @Html.ActionLink не принесет большого прогресса. Я пытался написать:

return System.Web.Mvc.Html.LinkExtensions.ActionLink(null, content.Title, "Details", "Content", new { Id = content.Id }, null);

Но я получаю исключение нулевого указателя. Создать экземпляр HtmlHelper для первого параметра непросто.

Какие у меня варианты? Я застрял с предоставлением им полного доступа ко всем моим контроллерам в рамках моего API? Нет ли способа предоставить упрощенный API для их потребления? (Я не пытаюсь заблокировать их от написания кода Razor; только инкапсулирую и упрощаю вызовы и устраняю основную зависимость от моих контроллеров и моделей.)

Ответы [ 2 ]

1 голос
/ 25 мая 2011

Предоставленные html-помощники довольно простые, но вы наверняка можете создать помощника.Только будьте осторожны - существующий API предоставляется и точно соответствует остальной части модели программирования MVC (помощники Ajax и html и синтаксис маршрута)

Проблема в том, как вы вызываете код.Пожалуйста, опубликуйте весь ваш код, чтобы мы могли проверить его.

Вопрос именно в том, что вы хотите сделать?Вы хотите создать помощника для EditLinkFor - но что-то не получается, мы можем увидеть весь код?

...