У меня есть это представление, основанное на списке модели, где я создаю строго типизированные флажки для каждого элемента модели на основе логического.Как создать список объектов на основе checkboxfor, созданных для модели
Вот мое мнение:
@using MyApp.Models
@model IList<MyApp.Models.ObjInfo>
@{
ViewBag.Title = "Obj Inventory";
}
<h2>Search Inventory</h2>
<p>
@using (Html.BeginForm())
{
(Many search filters which are non-relevant)
<p>
Send Items: @Html.ActionLink("Click Here", "SendItems")
</p>
}
<table>
<tr>
<th>
Obj Name
</th>
<th>
Number In Stock
</th>
(...)
<th>
Select Item
</th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.OtherObj.m_Name)
</td>
(...)
<td>
@Html.CheckBoxFor(modelItem => item.m_IsSelected)
</td>
</tr>
}
</table>
Весь процесс работает отлично, и я могу на самом деле создать представление с флажками для каждого элемента моего списка модели.
Теперь мой вопрос в том, что я хочу создать список, который будет группировать только элементы в списке, которые проверяются, и отправлять их на контроллер. Как я мог это сделать? Может ли кто-нибудь помочь мне или предложить мне способ работать?
Спасибо!
* EDIT *
Вот метод HttpPost используется для получения списка элементов, как указано ниже:
//
// GET: /Inventory/SendItems
[HttpPost]
public ActionResult SendItems(IList<ObjInfo> listToSend)
{
m_ListObjToSend = new List<ObjInfo>();
foreach (var item in listToSend.Where(item => item.m_IsSelected))
{
m_ListObjToSend .Add(item);
}
return View(m_ListObjToSend);
}
Однако я столкнулся с множеством проблем:
- Это метод НЕ работает, если я помещаю атрибут [HttpPost] (он будет отображаться как «Not Found»);
- Список, который я должен получать, имеет значение NULL;
- Каждое скрытое поле, связанное с флажком, имеет значение по умолчанию как false, даже если проверенное значение показывает true;
- Я использую actionlink, потому что я не хочу использовать кнопку, есть уже одна, которая выполняет другую работу.
Я открыт для любых комментариев/помощь доступна, спасибо!
Хорошо, я попробую это. Большое спасибо! Просто вопрос: вы, кажется, предпочитаете использовать «за» вместо «foreach», почему? – hsim
Прочтите эту статью, чтобы понять правильное соглашение об именах, которое вы должны использовать при привязке к списку: http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx Как только вы поймете это вы также поймете, почему я использую 'for' вместо' foreach'. –
Wow thats быстро. –