Я создаю это приложение MVC3 Razor ASP.NET, в котором я использую пользовательский WebViewPage, который наследует от этого. Так что все мои взгляды использовать мои пользовательские WebViewPage:Есть ли способ получить доступ к пользовательскому помощнику с контроллера?
public class MyCustomWebViewPage : System.Web.Mvc.WebViewPage
{
public CustomHelper MyHelper { get; private set; }
:
}
, а затем в web.config, расположенный в папке Views я указал, что MyCustomViewPage моя базовая страница по умолчанию.
<system.web.webPages.razor>
<pages pageBaseType="Namespace.MyCustomWebViewPage">
<namespaces>
:
</namespaces>
</pages>
</system.web.webPages.razor>
До сих пор так хорошо, наПредставление в .cshtml страниц, которые я могу получить доступ к пользовательскому помощнику из бритвы разметки:
@MyHelper.SomeMethod()
Теперь, есть что-то, что нужно сделать условно на помощнике. Я попытался установить свойство хелпера в разделе @ {} запуска CSHTML, но слишком поздно, чтобы его принять во внимание.
Итак, я собираюсь сделать это либо по вызываемому методу Action, либо переопределить метод OnActionExecuting().
У меня есть проблема в том, что в контроллере я не нашел способ, чтобы получить доступ к моему пользовательскому помощнику, таким как:
public class AnyController : Controller {
public ActionResult Index() {
MyHelper.SomeProperty = true;
}
}
Чтобы объяснить это немного больше, концепция является то, что в действии (код действия в контроллере). Я хочу установить свойство в пользовательском помощнике, чтобы включить определенные функции. Таким образом, это не отображается на представлениях, которые ему не нужны. Он отличается от концепции @section, в которой контент определен в представлении, а скорее говорит: «Я хочу, чтобы эта функция была добавлена в макет», и макет выдал некоторую предопределенную разметку, которая позволила бы этой функции И, что в нескольких местах в представлении могут быть «самородки», которые требуют «разметки или скрипта поддержки функций». Если я использую раздел, то этот «общий» сценарий будет появляться несколько раз, и это не то, что мне нужно.
Сказав это, как я могу получить доступ к (пользовательскому) помощнику, определенному на странице базового представления, изнутри контроллера?
Информация, которую я пытаюсь получить, полностью не зависит от модели. Как я указал, это помощник, который позволяет мне делать определенные вещи. Например, некоторые вспомогательные методы Google AdSense, которые я могу или не хочу использовать в представлении. По этой причине я хочу иметь доступ к пользовательской веб-странице, чтобы сообщить, что-то делать или нет. Это также не функциональность раздела. –
Я добавил комментарии, почему это было бы очень сложно ... Подумайте об использовании существующих способов вместо этого ... –
Эх, я не хочу выталкивать вещи после визуализации представления. Я хочу, @ Alexei-levenkov перед визуализируемым представлением, установить атрибут/свойство, чтобы макет макета представления отображал некоторые данные (включая общий скрипт). После этого мне ничего не нужно обновлять, представление отображается так, как я хочу. –