web-dev-qa-db-ja.com

ASP.NET MVC3パーシャルビューの命名規則

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コードを使用していました。 :(

41

アンダースコアを使用する必要はありませんが、直接提供することを意図していないファイルの一般的な規則です。

これを解決するには、ビューの名前をパラメーターとして使用して、ViewまたはPartialViewを返すオプションがあります。

return View("_List");

または

return PartialView("_List");

または別のビュー内

@{ Html.RenderPartial("_List"); }
58
ataddeini

部分ビューがActionMethodに依存し、常にActionメソッドによってレンダリングされる場合は、このようにアクションメソッドと同じ部分ビュー名を同じにする必要があります

public PartialViewResult List()
     {
        DoSomthing();
        //PartialView() return a "List "Parial View  
        return PartialView();
     }

しかし、あなたの部分的なビューがアクションメソッドに依存せず、このようにビューによって直接呼び出す場合

@Html.RenderPartial("_List"); 
2
Kashif Faraz

まず、どのプラットフォームにも不慣れであることに恥はありません。そして、これは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>

要点は、アンダースコアや中括弧を不必要に使用しないことです。彼らは醜いキャラクターであり、私たちはそれらを避けるべきです。 ;)

0
Jordan