複数のコントローラから継承できる汎用アクションメソッドを作成する方法を探しているので、MVCで異なるコントローラとテーブルに対して同じメソッドを繰り返す必要はありません。私は、これが複数のクラスで頻繁に行う必要があるCRUDの多くに適用できると思います。例えば、ここで私は複製したいコードがデータベース呼び出しを使用した汎用アクションメソッドmvc
です:
public ActionResult ToggleQC(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
BACTERIA_EVW bacteria = db.BACTERIA_EVW.Find(id);
if (bacteria == null)
{
return HttpNotFound();
}
//add/remove QC status (switch to whichever one it isn't right now)
if (bacteria.QCOn == null) //if it hasn't been QCed
{
bacteria.QCOn = DateTime.Now;
bacteria.QCBy = User.Identity.Name;
}
else //if it has been QCed and they are undoing it
{
bacteria.QCBy = null;
bacteria.QCOn = null;
}
//save changes
db.Entry(bacteria).State = EntityState.Modified;
db.SaveChanges();
//return updated QC status partial
return PartialView("_QCStatus", bacteria);
}
私は化学のコントローラで同じことを行う必要があるが、私はむしろ、全体のことを繰り返さないと、一つだけを変更したいです部。 BACTERIA_EVW
を置き換えるために、モデルタイプをパラメータとしてメソッドに渡すことは可能ですか?どうすればいい?
これが本当に基本的なものである場合はお詫び申し上げます。私は探すべき正しい言葉を知らないかもしれません。私はジェネリックアクションメソッドを探しましたが、ジェネリックコントローラについては何かがありましたが、答えは見つかりませんでした。ジェネリックコントローラクラスに何らかの形でこのようなメソッドを組み込む必要がありますか?
ありがとうございました。
一般的な方法はhttps://msdn.microsoft.com/en-us/library/twcad0zb.aspxコントローラから呼び出すことです – Shekhar
google「抽象メソッド」 – Steve
@Shekhar以上の方法が必要です"db。* BACTERIA_EVW * .Find"やアップデートの保存に対処するために単に "ジェネリックを読んでください"。 –