В ASP.Net MVC, как вы можете использовать TryUpdateModel для обновления из определенного объекта - PullRequest
0 голосов
/ 21 октября 2010

У меня есть действие поста контроллера, которое получает IList <> в качестве параметра и хотел бы повторить этот список и TryUpdateModel для каждого элемента в списке.Как и

[HttpPost]
public ActionResult SaveList(IList<Stuff> listOfStuff)
{
    // Get existing list of Stuff objects
    IList<Stuff> currentStuff = db.GetStuffList();

    // iterate over list of Stuff
    foreach (Stuff stuff in listOfStuff)
    {
        // I'd like to do something akin to this
        TryUpdateModel(currentStuff[correspondingItem_to_stuff], stuff);
    }

Как вы можете видеть, я хотел бы иметь возможность TryUpdateModel для каждого элемента в listOfStuff, но нет прямого способа сделать этот вызов с двумя объектами Stuff.Каков наилучший способ сделать это?

Спасибо

Ответы [ 3 ]

1 голос
/ 21 октября 2010

Если вы хотите, чтобы currentStuff был таким же, как список вещей, вам просто нужно UpdateModel (currentStuff). UpdateModel предназначен для копирования в объект значений значений, связанных с HTTP-запросом, а не для копирования свойств двух объектов.

0 голосов
/ 22 октября 2010

Похоже, это не поддерживается напрямую. После еще нескольких поисков я нашел пару ссылок, самая полезная из которых была

Передача контроллера FormCollection и IList

В этом сообщении есть пара других полезных ссылок. Я, к сожалению, сам свернул его и использовал TempData, как подробно описано здесь , для восстановления в случае сбоя при сохранении данных формы.

0 голосов
/ 21 октября 2010

UpdateModel и TryUpdateModel должны получить тип ValueProvider (например, FormCollection). проверьте опубликованный объект в вашем контроллере или слое сервиса, а затем позвольте своему уровню БД обрабатывать добавление / обновление с помощью attach () или applycurrentvalues ​​() (если вы используете Entity Framework, например)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...