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. :(
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"); }
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. ;)
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");