Entity Framework を使用して ASP.NET MVC 3 プロジェクトに取り組んでいます。
さまざまなサブページを含む管理ページを作成しています。これらのページは、さまざまなモデルのプロパティを構成するためだけに使用されます。私のすべてのビューは厳密に型付けされているため、すべてのビューは何らかのタイプのオブジェクトをコントローラーに送り返します。コントローラーはすべてのモデルとビューに対して同じアクションを実行し、私は多くのモデルを持っているため、メソッドのシグネチャとその他のもののみを変更して、コピーペーストせずにコントローラーを1つだけ維持したいと思います。
現在のサブページを保存し、どのモデルのデータを読み取りまたは挿入/削除する必要があるかを検出するために、投稿リクエストを通じて常にカテゴリ変数を設定しています。read メソッドに問題はありません。
public ActionResult Read([DataSourceRequest] DataSourceRequest request, string category)
{
ViewBag.Category = category;
return Json(_cat.Category(category).ToDataSourceResult(request));
}
辞書を持つ Category メソッドを呼び出し、カテゴリ var に基づいて、リポジトリを使用して必要なモデルのデータを読み取り、コントローラーに送り返します。単純。
しかし、コントローラーの作成/更新/削除では、コピーペーストせずに同じことを行うことはできません。簡単な例を次に示します。
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Update([DataSourceRequest] DataSourceRequest request,
string category,
MeansAssessment meansassessment = null,
EthinicOrigin ethinicorigin = null)
{
ViewBag.Category = category;
switch (category)
{
case "MeansAssessments":
if (meansassessment != null && ModelState.IsValid)
{
_meansAssessmentsRepository.Update(meansassessment);
}
break;
case "EthinicOrigins":
if (ethinicorigin != null && ModelState.IsValid)
{
_ethinicOriginsRepository.Update(ethinicorigin);
}
break;
}
return Json(ModelState.ToDataSourceResult());
}
ご覧のとおり、私が持っているすべてのモデル タイプのオブジェクト (20 以上あります) をメソッド シグネチャに入れ、switch を使用して適切なリポジトリを呼び出す必要があります。
いくつかの基本的なクラスを作成してそれを操作するようなことをしたいと思います。別の方法で試してみましたが、うまくいきませんでした。
どんな助けやアイデアも大歓迎です!