まず、私はMVCの初心者です。別のビューからビューの関数にアクセスする
コントローラがFinanceController
です。このコントロールのStoreEvaluationForm
とSendStoreEvaluationToPdf
の2つのビューがあります。最初のビューのpublic static
関数を呼び出すと、@functions
で定義されている関数が2番目のビューから呼び出されます。
ビューはmvcのクラスを隠していると思います。最初のビューの機能にマウスを重ねると、VSはそのクラス名が_Page_Views_Finance_StoreEvaluationForm_cshtml
で、その名前空間はASPとなります。しかし、私は別のビューの機能にアクセスする方法を見つけることができませんでした。 2番目のビューでは、名前空間には_Page_Views_Finance_SendStoreEvaluationToPdf_cshtml
という名前のクラスしかありません。
明確にするため、ビュー内の関数はJavaScript関数ではないC#関数です。その定義は:
@functions
{
public static string NumberFormatter(double? number, bool percent = false)
{
return number == null ? null : string.Format("{0}{1}", number.Value.ToString("N2"), percent ? "%" : null);
}
}
共有関数をヘルパークラスに移動するとよいでしょう。あなたがそれをすることができない理由はありますか? –
理由はありません。それをコントローラクラスに移動することもできます。しかし、私は知りたい。同じコントローラにある別のビューからビューの機能にアクセスする方法はありますか? –
MVCを使用すると、ビューに機能がありません。コードまたはビューの一部を共有するには、部分ビューを作成します。 JavaScriptの場合はスクリプトファイルに入れて、両方の場所で参照してください。 –