私は奇妙な問題を抱えていますが、これを解決する方法が何であるかは100%わかりません。ベースビューを使用したASP.NET MVC継承コントローラ
考えるMVCコントローラ、BaseController(以下ミニマル例)
BaseController : Controller
{
public ActionResult LotsOfActions()
{
//this calls a view that renderActions AnAction(SomeModel) a bunch of times.
}
public ActionResult AnAction(Object SomeModel)
{
//do stuff
return View("AnAction",TemplateFromCode,ViewModel); //Depending on something in SomeModel, we want a different template for this.
}
}
DerivedController : BaseController
{
public override ActionResult LotsOfActions()
{
//this calls a view that renderActions BaseController.AnAction(SomeModel) a bunch of times but with different logic.
}
}
AnActionがDerivedControllerに呼び出されると、DerivedController/AnAction.cshtml(または任意の名前)、私は必要としない使用しようとしていますサブビューが同じでなければならないので、ビューが見つかりません。エラーが発生します。 BaseController/AnAction.cshtmlを私が意図した通りに使う方法を教えてください。 BaseControllerのサブクラスである他のものに対してこのビューをオーバーライドしたい場合、DerivedControllerの前にスキャンされているため、共有ビューフォルダを使用したくないです。
あなたは自分のベースコントローラに明示することができます: '〜"(ビューを返します/Views/Base/AnAction.cshtml "..." – DavidG
これは...驚くほど明白でした。実際にはありがたいです。これを回答としてドロップすると、すぐに回答としてマークされます。 、しかしねえ。 – ASpencer