Поскольку у вас уже есть новый список в списке результатов, вы можете решить его с помощью списка результатов и добавить его в список клиентов.
customers.clear();
for(Customer newCustomer: result){
if(newCustomer.user_id != 3){
customers.add(newCustomer);
}
}
Второй вариант - перебирать список клиентов. используя ListIterator
ListIterator<Customer> iter = customers.listIterator();
while(iter.hasNext()){
if(iter.next().user_id == 3){
iter.remove();
}
}
или
customers.removeIf(customer -> customer.user_id == 3);
Используйте FormCollection и выполните итерации через пары ключ/значение. По-видимому, можно использовать схему именования, которая позволит Вам определять, какие пары ключ/значение принадлежат Вашему набору атрибута.
[AcceptVerbs( HttpVerb.POST )]
public ActionResult Whatever( FormCollection form )
{
....
}
Зависит от опыта, который Вы надеетесь создавать для пользователя. Я реализовал что-то подобное для меток содержания. В модели Теги представлены как IList, но UI показывает, что запятая разграничила список в единственном текстовом поле. Я затем обрабатываю слияние объектов в списке в строку для заполнения текстового поля, и я разделил вход для откладывания объектов в IList в модели.
В моем DAL я затем имею дело с преобразованием Списка в объекты LINQ, дескриптор вставляет и удаляет и т.д.
Это не самый прямой код, но не слишком трудно справиться, и это дает пользователю ожидаемый интерфейс.
Я уверен, что существуют другие способы обработать его, но я сфокусировался бы на том, что будет работать лучше всего на пользователя и затем разрабатывать отображающиеся детали на основе этого.
Andrew,
Я думаю что-то немного более трудное, чем теги. В этом простом случае имя / оценивают пару.. цвет: Красный; размер: 10; материал: хлопок.
Я думаю что-либо, что могло использоваться на этом, мог расшириться на более сложный. Т.е. Добавление категории и добавление всех ее объектов на той же странице. Относительно легко добавить другую строку с помощью некоторого jQuery, но каково согласие по отправке информации к ActionMethod?
Вы не можете кодировать:
public ActionResult Whatever(stirng attr1Name, string attr2Name, string attr3Name ...
Также я не думаю, признавая, что это работало бы также:
public ActionResult Whatever(ILIst<Attribute> attributes, string productName ...
Используйте настраиваемую привязку модели и напишите методы действия, как обычно:
ActionResult Edit(
int id,
[ModelBinder(typeof(ProductModelBinder))] Product product
) ...
В ProductModelBinder вы перебираете значения коллекции форм и выполняете привязку к сущности Product. Это делает интерфейс контроллера интуитивно понятным и может помочь при тестировании.
class ProductModelBinder : IModelBinder ...
Посмотрите сообщение в блоге Стива Сандерсона Редактирование списка переменной длины в стиле ASP.NET MVC 2 .
Ваш метод действия получает вашу собственную модель предметной области Продукт
и остается довольно простым:
public ActionResult Edit(Product model)
Edit.aspx
<!-- Your Product inputs -->
<!-- ... -->
<!-- Attributes collection edit -->
<% foreach (Attribute attr in Model.Attributes)
{
Html.RenderPartial("AttributeEditRow", attr);
} %>
AttributeEditRow.ascx
Обратите внимание на вспомогательное расширение Html.BeginCollectionItem (string)
<% using(Html.BeginCollectionItem("Attributes")) { %>
<!-- Your Attribute inputs -->
<% } %>
Также возможно добавление и редактирование новых атрибутов. См. Сообщение.