MVCの開発は初めてなので、ご容赦ください。命名規則に準拠するために、部分ビューに_Action.cshtml
(_
アンダースコア付き)のような名前を付ける必要はありますか?
これが私の問題です。コントローラー(StudentController)とアクション(List)があり、 "List.cshtml"という名前の部分的なビューファイルがあり、
@{ Html.RenderAction("List", "Student"); }
これを私のHomeController-Indexビュー内に表示するには、機能する部分ビューとして使用します。ただし、部分ビューに_List.cshtml
という名前を付けても、もちろん機能しません。 Visual Studioは、私のアクション(List.cshtml)
とまったく同じ名前を探していると考えているため、私のアクションStudent-Listのビューを見つけることさえできませんでした。私は何をすべきか?
私はASP.NET ascxとペアのascx.csコードを使用していました。 :(
アンダースコアを使用する必要はありませんが、直接提供することを意図していないファイルの一般的な規則です。
これを解決するには、ビューの名前をパラメーターとして使用して、ViewまたはPartialViewを返すオプションがあります。
return View("_List");
または
return PartialView("_List");
または別のビュー内
@{ Html.RenderPartial("_List"); }
部分ビューがActionMethodに依存し、常にActionメソッドによってレンダリングされる場合は、このようにアクションメソッドと同じ部分ビュー名を同じにする必要があります
public PartialViewResult List()
{
DoSomthing();
//PartialView() return a "List "Parial View
return PartialView();
}
しかし、あなたの部分的なビューがアクションメソッドに依存せず、このようにビューによって直接呼び出す場合
@Html.RenderPartial("_List");
まず、どのプラットフォームにも不慣れであることに恥はありません。そして、これは8年前のことなので、おそらくあなたはもう新しくはありません。使用する命名規則は何でも使用できます。 共有ビューにのみアンダースコア(_)を使用する元のMVC命名規則を使用します。部分ビューは、そのアクションに基づいて名前を付ける必要があります。あなたの場合、もちろんこれが共有ビューでない限り、ビューの名前はAction.cshtmlになります。
私の推論は簡単です。アクションからViewまたはPartialViewを呼び出し、viewNameを指定しない場合、ビューの名前はアクションの名前であると見なされます。また、_Layout.cshtmlには下線が付けられます。これは、部分的なビューではなく、共有されているためです。この間違いは、MVCの世界のいたるところにあります。人々はそれについて本当に熱心に間違っています。理由がわからない。命名規則はショップの裁量です。
ヘルパーメソッドHtml.RenderAction
およびHtml.Action
コントローラのアクションを呼び出します。ヘルパーメソッドHtml.RenderPartial
およびHtml.Partial
アクションを介さずにモデルを直接Razorビューに渡すことができます。
最後に、Action
ではなくRenderAction
を呼び出します。 RenderAction
は、すでにコードブロック内にいる場合にのみ呼び出されます。これはほとんど決してのケースではありません。ビルドが壊れたというだけで、RenderAction
を使用していて、不必要にその周りにコードブロックを追加している人がいます。次の2つのコードスニペットは exactly と同じで、2番目のコードスニペットは私の意見ではより読みやすくなっています。 div
を入れて、コードがコードブロック内にないことを強調します。
<div>
@{ Html.RenderAction("List", "Student"); }
</div>
<div>
@Html.Action("List", "Student")
</div>
要点は、アンダースコアや中括弧を不必要に使用しないことです。彼らは醜いキャラクターであり、私たちはそれらを避けるべきです。 ;)