Ich erbte eine MVC-Site und wurde gebeten, zwei Seiten zu einer zu kombinieren. Da beide Ansichten ihr eigenes Ansichtsmodell haben, dachte ich, anstatt die beiden VMs zusammen zu schieben, könnte ich eine Teilansicht verwenden, um in diesem Fall die Uhrgruppe in einer Ansicht namens Uhr_Detail anzuzeigen. Allerdings muss ich die GroupId die Daten für die Uhr Gruppe füllen.Verwirrt, wenn Parameter an MVC Partial View übergeben werden?
So selten Teilansichten verwendet habe, bin ich verwirrt, wie dies funktioniert. Ich habe eine neue Ansicht mit dem Namen _ClockGroup.cshtml
erstellt und einfach etwas Basiscode von der anderen Seite kopiert und eingefügt, nur um zu sehen, ob ich etwas anzeigen kann.
In meinem ClockDetail-Controller habe ich Folgendes hinzugefügt.
public PartialViewResult ClockGroup(int groupId)
{
ClockGroupViewModel vm = DAL.GetClockGroupDetail(groupId);
return PartialView(vm);
}
Hier ist _ClockGroup.cshtml
@model site.Models.ViewModels.ClockGroupViewModel
<div class="form-group">
@Html.LabelFor(m => m.GroupId, htmlAttributes: new { @class = "control-label col-md-2" })
@Html.EditorFor(m => m.GroupId, new { htmlAttributes = new { @class = "form-control", disabled = "disabled", @readonly = "readonly" } })
</div>
<div class="form-group">
@Html.LabelFor(m => m.GroupName, htmlAttributes: new { @class = "control-label col-md-2" })
@Html.EditorFor(m => m.GroupName, new { htmlAttributes = new { @class = "form-control", autofocus = "autofocus" } })
@Html.ValidationMessageFor(m => m.GroupName, "", new { @class = "text-danger" })
</div>
Das von der clock_detail.cshtml Ansicht ist. Es verwendet das folgende Modell und dann fügte ich die Teilweise zu dieser Ansicht hinzu.
@model site.Models.ViewModels.ClockDetailViewModel
@Html.Partial("_ClockGroup")
Natürlich bekomme ich einen Fehler, dass das Modell eine Wörterbuchtyp “site.Models.ViewModels.ClockDetailViewModel”
vergangen, aber das Wörterbuch erfordert ein Modell Artikel Zeit “site.Models.ViewModels.ClockGroupViewModel"
.
Muss ich die beiden ViewModels zusammen kombinieren und nur das einzelne ViewModel verwenden?
Nebenbei schreiben Sie Code in Ihren Teilsprachen, sollten Sie wahrscheinlich mit [Vorlagen statt] (http://www.growingwiththeweb.com/2012/12/aspnet-mvc-display-and-editor- templates.html). Vorlagen sind vorteilhaft, weil sie viel besser lesen und die Konvention für das Aufrufen erleichtert die Diagnose. Es ist selten für mich, Teiltöne zu verwenden. –
Ich schaue mir Templates an. Ich bin immer offen für etwas, wenn es die Wartbarkeit des Codes hilft. – Caverman