いくつかのユーティリティ関数とページネーション関数があります。これらの関数に対してそれぞれUtilityおよびPaginationという名前のクラスを作成して、これらのクラス関数を複数のコントローラーで使用できるようにします。
では、これらのクラスをフォルダ構造のどこに配置できますか?また、どのようにアクセスできますか?
いくつかのユーティリティ関数とページネーション関数があります。これらの関数に対してそれぞれUtilityおよびPaginationという名前のクラスを作成して、これらのクラス関数を複数のコントローラーで使用できるようにします。
では、これらのクラスをフォルダ構造のどこに配置できますか?また、どのようにアクセスできますか?
ルートの下に呼び出される新しいフォルダを作成し、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メソッドを別のプロジェクトでも使用できると思われる場合は、それらを物理的に別のプロジェクト(型クラスライブラリ)に保持することを検討してください。プロジェクトでこれを使用するには、このプロジェクトへの参照を追加し、上記のように使用します(完全修飾名を使用するか、インポートステートメントを使用します)
論理的で便利な場所ならどこにでもヘルパークラスを配置できます。
個人的にHelpers
は、メインのプロジェクトフォルダからフォルダを作成します。
クラス名を完全に修飾するか、using
ステートメントを使用して、どこでも使用できます。
かみそりのビューでは、
@using MyProject.Helpers
コントローラーまたはモデルでは、
using MyProject.Helpers;
もう1つのアプローチは、ベースコントローラークラスを作成し、そこに共通ロジックを追加して、ベースコントローラーからコントローラーを派生させることです。
public class MyBaseController:Controller
{
public void CommonFunction()
{
}
}
次のように使用します...
public HomeController:MyBaseController
{
}
新しいプロジェクトを作成してから、共通のクラスをプロジェクトに配置できます。それらを使用したい場合は、プロジェクトの参照を追加するだけです。
また、クラスの「ビルドアクション」は必ず「コンパイル」に設定してください。Visual Studio 2015では、デフォルトで、App_Code内に作成されたすべてのクラス(右クリック->追加->クラス)は、ビルドアクションとして「コンテンツ」を取得しました。