Modello Supponiamo che io sono un modello come questo:vincolante una proprietà della raccolta con una vista parziale
public class Foo {
public List<Bar> Bars { get; set; }
public string Comment { get; set; }
}
public class Bar {
public int Baz { get; set; }
}
E voglio una vista Foo
che permette di creare Bar
articoli. Ma con una presa: voglio che la modifica Bar
sia gestita da una vista parziale.
@model Web.ViewModels.Foo
@using(Html.BeginForm()) {
@Html.Partial("_EditBars", Model.Bars)
@Html.TextAreaFor(m => m.Comment)
...
}
Il _EditBars
vista parziale sembra qualcosa di simile:
@model List<Web.ViewModels.Bar>
@for (int i = 0; i < Model.Count; i++) {
@Html.EditorFor(m => Model[i].Baz)
}
Voglio che questo modellare legano alla mia azione, che sembra qualcosa di simile:
[HttpPost]
public ActionResult Edit(Foo foo) {
// Do stuff
}
Purtroppo, questo è il dato che sto postando, che non modellizza la proprietà Bars
:
[1].Baz=10&[0].Baz=5&Comment=bla
Ha senso che questo non funziona, perché manca il prefisso Bars
. Se ho capito bene, ho bisogno di essere questo:
Bars[1].Baz=10&Bars[0].Baz=5&Comment=bla
Così, ho provato this approach:
@Html.Partial(
"_EditBars",
Model.Bars,
new ViewDataDictionary(ViewData)
{
TemplateInfo = new TemplateInfo
{
HtmlFieldPrefix = "Bars"
}
})
Ma che non funziona neanche. Con questo, sto ottenendo:
Bars.[1].Baz=10&Bars.[0].Baz=5&Comment=bla
suppongo che che non funziona a causa del tempo supplementare (Bars.[1]
vs. Bars[1]
). C'è qualcosa che posso fare per ottenere il risultato che desidero?
Nota: Questa è una semplificazione eccessiva della mia situazione attuale. Riconosco che con qualcosa di così semplice, l'approccio migliore sarebbe probabilmente quello di creare uno EditorTemplate
per Bar
e passare attraverso EditorFor
nella mia vista. Se possibile, vorrei evitare questa soluzione.
@gdp, modificato per mostrare la vista parziale e aggiunto una nota alla fine della mia domanda. Grazie! – Eric
hai mai risolto alla fine? avere lo stesso problema – user3281466
È passato un po 'di tempo, quindi non ricordo i dettagli, ma guardando i miei registri di commit, ho commesso qualcosa dopo aver posto questa domanda che ha fatto riferimento a questo: http://stackoverflow.com/questions/1488890/asp -net-mvc-partial-views-input-name-prefixes/6292180 # 6292180, che credo possa essere correlato. – Eric