Angenommen, ich habe ein Modell wie folgt aus:Modell eine Sammlung Eigenschaft mit einer Teilansicht Bindung
public class Foo {
public List<Bar> Bars { get; set; }
public string Comment { get; set; }
}
public class Bar {
public int Baz { get; set; }
}
Und ich möchte einen Blick auf Foo
die Bar
Artikel Benutzer bearbeiten können. Aber mit einem Haken: Ich möchte die Bar
Bearbeitung von einer Teilansicht behandelt werden.
@model Web.ViewModels.Foo
@using(Html.BeginForm()) {
@Html.Partial("_EditBars", Model.Bars)
@Html.TextAreaFor(m => m.Comment)
...
}
Die _EditBars
Teilansicht etwas wie folgt aussieht:
@model List<Web.ViewModels.Bar>
@for (int i = 0; i < Model.Count; i++) {
@Html.EditorFor(m => Model[i].Baz)
}
ich diese binden an meine Aktion zu modellieren, die wie etwas aussieht:
[HttpPost]
public ActionResult Edit(Foo foo) {
// Do stuff
}
Leider ist dies die Daten dass ich schreibe, die nicht modelliert bindet die Bars
Eigenschaft:
[1].Baz=10&[0].Baz=5&Comment=bla
Es macht Sinn, dass dies nicht funktioniert, weil es das Bars
Präfix fehlt. Wenn ich richtig verstehe, muss ich es, dies sein:
Bars[1].Baz=10&Bars[0].Baz=5&Comment=bla
Also habe ich versucht, this approach:
@Html.Partial(
"_EditBars",
Model.Bars,
new ViewDataDictionary(ViewData)
{
TemplateInfo = new TemplateInfo
{
HtmlFieldPrefix = "Bars"
}
})
Aber das ist auch nicht arbeiten. Damit erhalte ich:
Bars.[1].Baz=10&Bars.[0].Baz=5&Comment=bla
Ich gehe davon aus, dass das nicht wegen der zusätzlichen Zeit arbeitet (Bars.[1]
vs. Bars[1]
). Kann ich etwas tun, um das gewünschte Ergebnis zu erzielen?
Hinweis: Dies ist eine große Vereinfachung meiner tatsächlichen Situation. Ich erkenne, dass mit etwas so einfach, wäre der beste Ansatz wahrscheinlich eine 10 für Bar
und Loop-Through mit EditorFor
meiner Ansicht nach. Wenn möglich, möchte ich diese Lösung vermeiden.
@ Gdp, bearbeitet, um die Teilansicht anzuzeigen, und eine Notiz an den unteren Rand meiner Frage hinzugefügt. Vielen Dank! – Eric
hast du es jemals am Ende gelöst? Das gleiche Problem – user3281466
Es ist eine Weile her, so erinnere ich mich nicht an die Details, aber mit Blick auf meine Commit-Protokolle, habe ich etwas nach dem Stellen dieser Frage, die auf diese verwiesen: http://stackoverflow.com/questions/1488890/asp -net-mvc-partial-views-input-name-prefixes/6292180 # 6292180, die ich glaube, kann verwandt sein. – Eric