69

いくつかのユーティリティ関数とページネーション関数があります。これらの関数に対してそれぞれUtilityおよびPaginationという名前のクラスを作成して、これらのクラス関数を複数のコントローラーで使用できるようにします。

では、これらのクラスをフォルダ構造のどこに配置できますか?また、どのようにアクセスできますか?

4

5 に答える 5

86

ルートの下に呼び出される新しいフォルダを作成し、Helpersクラスを物理的にそこに保持することができます。クラスを別の名前空間の下に置きますHelpers

namespace MyProject.Helpers
{
  public class CustomerHelper
  {
        //Do your class stuff here
  }
}

他のクラス(例:コントローラー)でこれにアクセスするには、完全修飾名を使用できます

var custHelper=new MyProject.Helpers.CustomerHelper(); 

また

Import完全修飾名をスキップできるように、上部にステートメントを追加します

//Other existing Import statements here
using MyProject.Helpers;
public class RackController : Controller
{
  public ActionResult Index()
  {
     var custHelper=new CustomerHelper(); 
     //do something with this  
     return View();    
  } 
}

Helperメソッドを別のプロジェクトでも使用できると思われる場合は、それらを物理的に別のプロジェクト(型クラスライブラリ)に保持することを検討してください。プロジェクトでこれを使用するには、このプロジェクトへの参照を追加し、上記のように使用します(完全修飾名を使用するか、インポートステートメントを使用します)

于 2012-07-17T04:26:11.897 に答える
12

論理的で便利な場所ならどこにでもヘルパークラスを配置できます。

個人的にHelpersは、メインのプロジェクトフォルダからフォルダを作成します。

クラス名を完全に修飾するか、usingステートメントを使用して、どこでも使用できます。

かみそりのビューでは、

@using MyProject.Helpers

コントローラーまたはモデルでは、

using MyProject.Helpers;
于 2012-07-17T04:24:20.787 に答える
7

もう1つのアプローチは、ベースコントローラークラスを作成し、そこに共通ロジックを追加して、ベースコントローラーからコントローラーを派生させることです。

public class MyBaseController:Controller
{
   public void CommonFunction()
    {
    }
}

次のように使用します...

public HomeController:MyBaseController
{
}
于 2016-06-15T08:14:57.790 に答える
6

新しいプロジェクトを作成してから、共通のクラスをプロジェクトに配置できます。それらを使用したい場合は、プロジェクトの参照を追加するだけです。

于 2012-07-17T09:03:26.420 に答える
1

また、クラスの「ビルドアクション」は必ず「コンパイル」に設定してください。Visual Studio 2015では、デフォルトで、App_Code内に作成されたすべてのクラス(右クリック->追加->クラス)は、ビルドアクションとして「コンテンツ」を取得しました。

于 2017-09-22T17:23:47.673 に答える