1つのcshtmlファイル内でのみ必要な関数を作成する必要があります。私の状況はASP.NETページメソッドと考えることができます。ASP.NETページメソッドは1つのページに限定されているため、ページに実装される最小のWebサービスです。 HTMLヘルパー(拡張メソッド)について知っていますが、私の関数は1つのcshtmlファイルで必要なだけです。ビュー内で関数シグネチャを作成する方法がわかりません。 注:Razorテンプレートエンジンを使用しています。
@helper Razorディレクティブを使用できます。
@helper WelcomeMessage(string username)
{
<p>Welcome, @username.</p>
}
次に、次のように呼び出します。
@WelcomeMessage("John Smith")
なぜcshtmlファイル内でその関数を宣言しないのですか?
@functions{
public string GetSomeString(){
return string.Empty;
}
}
<h2>index</h2>
@GetSomeString()
メソッドが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)
Declarative Razor Helpers をご覧ください
ページのグローバル変数にアクセスする場合は、次の操作を実行できます。
@{
ViewData["Title"] = "Home Page";
var LoadingButtons = Model.ToDictionary(person => person, person => false);
string GetLoadingState (string person) => LoadingButtons[person] ? "is-loading" : string.Empty;
}