2016-08-01 11 views
1

まず、私はMVCの初心者です。別のビューからビューの関数にアクセスする

コントローラがFinanceControllerです。このコントロールのStoreEvaluationFormSendStoreEvaluationToPdfの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); 
    } 
} 
+5

共有関数をヘルパークラスに移動するとよいでしょう。あなたがそれをすることができない理由はありますか? –

+0

理由はありません。それをコントローラクラスに移動することもできます。しかし、私は知りたい。同じコントローラにある別のビューからビューの機能にアクセスする方法はありますか? –

+3

MVCを使用すると、ビューに機能がありません。コードまたはビューの一部を共有するには、部分ビューを作成します。 JavaScriptの場合はスクリプトファイルに入れて、両方の場所で参照してください。 –

答えて

2

はいです。そこにある表示Index

@{ 
    ViewBag.Title = "Home Page"; 
} 

@_Page_Views_Home_About_cshtml.DoStuff() 

... (other stuff) 

Indexビューの

@{ 
    ViewBag.Title = "About"; 
} 

@functions 
{ 
    public static string DoStuff() 
    { 
     return "Content from About view."; 
    } 
} 

内容:私はAboutビューのVisual Studioの2015年

コンテンツにおけるデフォルトMVCプロジェクトでそれを試してみました_Page_Views_Home_About_cshtmlの下に赤い波状の線が表示されます。

_Page_Views_Home_About_cshtmlは、エラーメッセージにもかかわらず、現在のコンテキスト

に存在しない名前は、アプリケーションが正常にビルドと/Home/Indexに移動するとき、私はAboutビューからのメッセージを見ることができます。

View

+0

それは面白いですが、あなたは正しいです。 –

関連する問題