Предположим, у меня есть модель, как это:модель связывания свойство сбора с частичным видом
public class Foo {
public List<Bar> Bars { get; set; }
public string Comment { get; set; }
}
public class Bar {
public int Baz { get; set; }
}
И я хочу, вид Foo
, который позволяет пользователям редактировать Bar
элементы. Но с уловкой: я хочу, чтобы редактирование Bar
обрабатывалось частичным представлением.
@model Web.ViewModels.Foo
@using(Html.BeginForm()) {
@Html.Partial("_EditBars", Model.Bars)
@Html.TextAreaFor(m => m.Comment)
...
}
_EditBars
частичного вид выглядит так:
@model List<Web.ViewModels.Bar>
@for (int i = 0; i < Model.Count; i++) {
@Html.EditorFor(m => Model[i].Baz)
}
Я хочу, чтобы модели привязки к моему действию, который выглядит примерно так:
[HttpPost]
public ActionResult Edit(Foo foo) {
// Do stuff
}
К сожалению, это данные что я размещаю, что не моделирует привязать свойство Bars
:
[1].Baz=10&[0].Baz=5&Comment=bla
Имеет смысл, что это не работает, потому что отсутствует префикс Bars
. Если я правильно понимаю, мне нужно, чтобы это было так:
Bars[1].Baz=10&Bars[0].Baz=5&Comment=bla
Итак, я попытался this approach:
@Html.Partial(
"_EditBars",
Model.Bars,
new ViewDataDictionary(ViewData)
{
TemplateInfo = new TemplateInfo
{
HtmlFieldPrefix = "Bars"
}
})
Но это не работает, либо. При том, что я получаю:
Bars.[1].Baz=10&Bars.[0].Baz=5&Comment=bla
Я предполагаю, что это не работает из-за дополнительного периода (Bars.[1]
против Bars[1]
). Есть ли что-нибудь, что я могу сделать, чтобы получить результат, который я желаю?
Примечание: Это серьезное упрощение моей реальной ситуации. Я понимаю, что с чем-то таким простым, лучший подход, вероятно, заключался бы в том, чтобы сделать EditorTemplate
для Bar
и пропустить его, используя EditorFor
на мой взгляд. Если возможно, я бы хотел избежать этого решения.
@gdp, отредактированный, чтобы показать частичный вид, и добавил примечание к нижней части моего вопроса. Благодаря! – Eric
Вы когда-нибудь решали это в конце? с той же проблемой – user3281466
Прошло некоторое время, поэтому я не помню подробностей, но, глядя на мои журналы фиксации, я кое-что совершил, задав этот вопрос, который ссылался на это: http://stackoverflow.com/questions/1488890/asp -net-mvc-partial-views-input-name-prefixes/6292180 # 6292180, которые, я считаю, могут быть связаны. – Eric