Мне нужно создать функцию, которая необходима только внутри одного файла cshtml. Вы можете думать о моей ситуации как о методах страницы ASP.NET, которые представляют собой минимальные веб-службы, реализованные на странице, потому что они ограничены одной страницей. Я знаю о помощниках HTML (методах расширения), но моя функция просто нужна в одном файле cshtml. Я не знаю, как создать сигнатуру функции внутри представления. Примечание. Я использую шаблонизатор Razor.
Как создать функцию в шаблоне cshtml?
30.06.2011
- См. Также Разница между помощниками и функциями 06.01.2021
Ответы:
1
Вы можете использовать директиву @helper Razor:
@helper WelcomeMessage(string username)
{
<p>Welcome, @username.</p>
}
Затем вы вызываете его так:
@WelcomeMessage("John Smith")
30.06.2011
2
почему бы просто не объявить эту функцию внутри файла cshtml?
@functions{
public string GetSomeString(){
return string.Empty;
}
}
<h2>index</h2>
@GetSomeString()
30.06.2011
functions
обеспечивает большую гибкость для других типов возвращаемых данных. Оба ответа получили +1 в моей книге, так как они оба являются полезными лакомыми кусочками информации. 25.10.2011 <p>Welcome, @username.</p>
против return new HtmlString("<p>Welcome, " + Html.Encode(username) + ".</p>");
. 21.02.2012 @helper
в одном представлении не делает его доступным для других представлений. Причина, по которой мне больше нравится @helper, заключается в том, что вы можете поместить html между фигурными скобками. @functions
(легко) не позволяет вам это делать. 23.10.2013 @helper
, и @functions
могут совместно использоваться многими представлениями, и оба могут быть объявлены в одном представлении и использоваться им (и я лично нашел их применение как в общих, так и в одиночных сценариях). ИМХО, единственное практическое различие между ними заключается в том, что помощник представления добавляет синтаксический сахар для возврата отрисованных фрагментов HTML (или, что более уместно, экземпляров HelperResult
), в то время как функция представления обычно полезна только для возврата простых ссылочные или значения типа. 24.01.2014
3
Если ваш метод не должен возвращать html и должен делать что-то еще, вы можете использовать лямбда вместо вспомогательного метода в Razor.
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
Func<int,int,int> Sum = (a, b) => a + b;
}
<h2>Index</h2>
@Sum(3,4)
30.06.2011
4
5
В ASP.NET Core Razor Pages вы можете комбинировать C # и HTML в функции:
@model PagerModel
@{
}
@functions
{
void PagerNumber(int pageNumber, int currentPage)
{
if (pageNumber == currentPage)
{
<span class="page-number-current">@pageNumber</span>
}
else
{
<a class="page-number-other" href="/table/@pageNumber">@pageNumber</a>
}
}
}
<p>@PagerNumber(1,2) @PagerNumber(2,2) @PagerNumber(3,2)</p>
29.07.2020
6
Если вы хотите получить доступ к глобальным переменным вашей страницы, вы можете сделать это:
@{
ViewData["Title"] = "Home Page";
var LoadingButtons = Model.ToDictionary(person => person, person => false);
string GetLoadingState (string person) => LoadingButtons[person] ? "is-loading" : string.Empty;
}
16.02.2019
GetLoadingState()
вот локальная функция. 27.04.2020 Новые материалы
Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..
Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально
Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..
Частный метод Python: улучшение инкапсуляции и безопасности
Введение
Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..
Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования
Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..
Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv)
Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..
Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..
Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..
@functions
, поэтому мне нравится этот ответ. 23.10.2013@helper
не может возвращать значения, отличные от IHtmlString. Это правильно. @helper похож на специализированную функцию, которая оптимизирована для возврата HTML (т.е. она выполняет кодирование HTML автоматически, тогда как простые функции этого не делают.) 21.06.2016