2014-01-11 2 views
1

У меня есть шаблон редактора для моего представления модели ViewSetup. На мой взгляд, чтобы использовать шаблон упрощаетсяПредставление формы для модели mvc, перечислимой с использованием шаблона редактора

@model IEnumerable<ViewSetup> 
@Html.EditorFor(s => s) 

Мой шаблон редактора ViewSetup имеет форму представления, как показано ниже:

using (Ajax.BeginForm("Edit", new AjaxOptions() { HttpMethod = "Post" })) 
{ 
    @Html.HiddenFor(p => p.TradingPartner.ID) 
    <input type="submit" value="Save" /> 
} 

Поэтому в основном я нужна форма, который будет представлен для каждого элемента Enumerable. Но я столкнулся с проблемой при подаче формы. Мой контроллер процесса пост является:

public ActionResult Edit(ViewSetup formDataSent) 
{ 
    formDataSent.Save();  
} 

В соответствии с моделью по умолчанию привязки Я получаю нулевой для TradingPartner собственности, так как имя в HTML является:

<input name="[0].TradingPartner.ID" type="hidden" value="1"/> 

Что мне нужно представить только Объект ViewSetup для каждого элемента вместо массива. Если я могу получить индексную часть имени удаленной, которая может работать для меня. Но я не уверен, как получить только объект ViewSetup при отправке формы.

ответ

0

Бьюсь об заклад, что если вы основываете свой редактор на одном элементе вместо списка элементов, тогда вы получите большую гибкость.

@model IEnumerable<ViewSetup> 

@foreach (var item in Model) 
{ 
    @Html.EditorFor(modelItem => item.TradingPartner) 
} 
+0

Нет, но у меня есть много свойств для модели ViewSetup. его сложнее, чем это, но я просто упростил это с помощью одного свойства выше. – kjj

+0

Возможно, посмотрите на частичные. Каждая часть может иметь модель и призывать другие частичные элементы с дочерней моделью. Однако это добавит больше подробностей. –

+0

Мне нужно использовать шаблоны, так как я должен повторно использовать это во многих местах моего приложения. Есть ли способ, которым я могу представить каждый элемент в цикле формы (только так я вижу, без добавления индекса в html-имя) .. спасибо. – kjj

0

Я была такая же проблема, то, что решить это для меня было это:

@foreach (var item in Model) 
{ 
    @Html.EditorFor(modelItem => item.TradingPartner, null, "") 
} 

Третье свойство EditorFor быть пустым избавится от «[0]» из ваших объектов.

Смежные вопросы