Это был колючий сон на моей стороне. Если я использую EditorFor для массива объектов, а редактор Template имеет форму в нем ex.Передача одного объекта при использовании редактора (модели [])
public class FooController:Controller{
pubic ActionResult Action(Foo foo){
blah...
}
}
Index.cshtml
@model IEnumerable<Foo>
@Html.EditorFor(m=> m)
EditorTemplate
@model Foo
@using (Html.BeginForm("action", "controller"))
{
@Html.TextBoxFor(f=> f.A)
@Html.CheckBoxFor(f=> f.B)
@Html.LabelFor(f=> f.B)
}
Так что я ударил несколько проблем.
Флажок лейбла для не правильно связать с флажком (Это связано с этикеткой, не получив надлежащего имя свойства ([0].A
в отличие от A
).
Я знаю, что я могу избавиться от предварительного текста, сделав foreach на модели в Индексе, но который закручивает идентификаторы и имена в качестве рамки, не понимает, что есть кратные значения одного и того же элемента и дают им одинаковые имена.
Для флажков I как правило, делал это вручную как таковое.
@Html.CheckBoxFor(m => m.A, new {id= Html.NameFor(m => m.A)})
<label for="@Html.NameFor(m => m.A)">A</label>
Однако я не могу решить проблему неспособности контроллера принять элемент как единую модель. Я даже пытался разрешить массив Foo в параметрах Action
, но это работает только тогда, когда его первый отредактированный элемент ([0]...
), если его какой-либо другой элемент в массиве (например, [1].A
), контроллер не знает, как разбирать Это. Любая помощь будет оценена по достоинству.
Как о создании комплексной модели ? –
@MarcLyon означает ли вы, что IEnumerable в родительском классе? Поскольку это побеждает всю цель обертывания каждого отдельного элемента в форме –
, я не совсем уверен в вашем описании, но это может быть дубликат http://stackoverflow.com/q/25333332/11683 – GSerg