Общая функция MVC Razor работает в нескольких режимах просмотра
У меня есть функции в моем представлении, которые разделяются несколькими страницами:
@functions
{
public HtmlString ModeImage(ModeEnum mode)
{
switch(mode)
{
case AMode: new HtmlString("<img etc..."); break;
// more etc...
}
}
}
Есть ли способ иметь его в отдельном файле и включать его на каждую страницу без необходимости копировать и вставлять его в каждый. Я знаю, что могу написать файл .cs и получить доступ к нему на странице, но функция действительно касается представления, и я ненавижу перекомпилировать, если эта функция изменяется.
Ответы
Ответ 1
Похоже, вы хотите, чтобы методы Razor @helper описывались в сообщении блога ASP.NET MVC3 и синтаксисе @helper в Razor Скоттом Гатри.
Вот обзор...
"Синтаксис @helper в Razor позволяет вам легко создавать повторно используемые вспомогательные методы, которые могут инкапсулировать функциональные возможности вывода в шаблонах вашего представления. Они обеспечивают лучшее повторное использование кода и могут также облегчить чтение кода".
Ответ 2
(Здесь более подробная версия существующих ответов.)
Создайте папку с именем App_Code
в корневом каталоге проекта MVC, если она еще не существует. Здесь создайте пустой вид бритвы и назовите его как хотите:
![MVC project with Razor view called Shared.cshtml inside App_Code folder]()
При необходимости добавьте методы @helper
и/или static
:
@helper ShowSomething()
{
<span>Something</span>
}
@functions
{
public static int CalculateSomething()
{
return 1;
}
}
Затем используйте их из своих представлений, сначала получив доступ к общему виду по имени:
@Shared.ShowSomething()
@Shared.CalculateSomething()
Ответ 3
Вы можете создать старую вспомогательную страницу и нанести обычный static
метод на странице.
Затем вы могли бы позвонить ему, написав PageName.MyMethod()
где угодно, и я считаю, что вам не нужно будет перекомпилировать проект.