webentwicklung-frage-antwort-db.com.de

ASP.NET MVC3-Namenskonvention für partielle Ansichten

Ich bin neu in der MVC-Entwicklung, also bitte ich Sie um Verständnis. Ist es wirklich notwendig, meine Teilansicht wie _Action.cshtml (mit dem _-Unterstrich) zu benennen, um die Namenskonvention einzuhalten?

Hier ist mein Problem, ich habe einen Controller (StudentController) und eine Aktion (List), die eine teilweise Ansichtsdatei namens "List.cshtml" hat, und habe 

@{ Html.RenderAction("List", "Student"); } 

um dies in meiner HomeController - Indexansicht als Teilansicht anzuzeigen, die funktioniert. Wenn ich jedoch meine Teilansicht _List.cshtml nenne, funktioniert das natürlich nicht. Visual Studio konnte die Ansicht für meine Aktion Schülerliste nicht finden, da es der Meinung ist, dass es immer noch den gleichen Namen wie meine Aktion (List.cshtml) sucht. Was soll ich machen? 

Ich bin so an ASP.NET ascx mit einem Paarung ascx.cs Code gewöhnt. :(

40

Es ist nicht notwendig, einen Unterstrich zu verwenden, aber es ist eine übliche Konvention für Dateien, die nicht direkt bereitgestellt werden sollen.

Um dieses Problem zu lösen, haben Sie die Möglichkeit, eine Ansicht oder PartialView mit dem Namen der Ansicht als Parameter zurückzugeben.

return View("_List");

oder 

return PartialView("_List");

oder in einer anderen Ansicht

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

Erstens ist es keine Schande, auf einer Plattform neu zu sein. Und das war vor acht Jahren, also bist du wahrscheinlich nicht mehr neu. Sie können die gewünschten Namenskonventionen verwenden. Ich gehe mit der ursprünglichen MVC-Namenskonvention um, die Unterstriche (_) nur für freigegebene Ansichten verwendet. Teilansichten sollten nach ihren Aktionen benannt werden. In Ihrem Fall wäre der Name der Ansicht Action.cshtml, es sei denn, dies ist natürlich eine gemeinsame Ansicht.

Meine Argumentation ist einfach. Wenn Sie View oder PartialView von einer Aktion aus aufrufen und keinen viewName angeben, wird davon ausgegangen, dass der Name der Ansicht der Name der Aktion ist. Auch _Layout.cshtml wird mit einem Unterstrich benannt. Dies liegt daran, dass es geteilt wird, nicht daran, dass es sich um eine Teilansicht handelt. Dieser Fehler ist in der MVC-Welt allgegenwärtig. Die Leute sind wirklich eifrig falsch. Ich weiß nicht warum. Namenskonvention liegt im Ermessen des Shops.

Die Hilfsmethoden Html.RenderAction und Html.Action Aktionen auf der Steuerung aufrufen. Die Hilfsmethoden Html.RenderPartial und Html.Partial Ermöglicht es Ihnen, ein Modell direkt an eine Razor-Ansicht zu übergeben, ohne eine Aktion zu durchlaufen.

Als letztes rufen Sie Action anstelle von RenderAction auf. RenderAction wird nur aufgerufen, wenn Sie sich bereits in einem Codeblock befinden. Dies ist fast nie der Fall. Ich sehe Leute, die RenderAction verwenden und dann unnötigerweise einen Codeblock hinzufügen, nur weil der Build abbricht. Diese beiden folgenden Codeausschnitte sind genau gleich und der zweite ist meiner Meinung nach viel besser lesbar. Ich habe das div gesetzt, um zu betonen, dass der Code nicht in einem Codeblock enthalten ist:


<div>
    @{ Html.RenderAction("List", "Student"); } 
</div>

<div>
    @Html.Action("List", "Student")
</div>

Die Quintessenz ist, keine Unterstriche oder geschweiften Klammern unnötig zu verwenden. Sie sind hässliche Charaktere und wir sollten sie vermeiden. ;)

0
Jordan

Wenn die partielle Ansicht von ActionMethod abhängt und immer nach Action-Methode gerendert wird, sollten Sie denselben partiellen View-Namen wie die action-Methode verwenden

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

aber wenn Ihre Teilansicht nicht von der Aktionsmethode abhängt, rufen Sie diese Ansicht direkt auf

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