Функция редактирования Post ASP MVC имеет нулевой параметр

#asp.net-mvc-3

#asp.net-mvc-3

Вопрос:

Я пытаюсь создать очень простое приложение MVC на основе руководства. Я использую маршрутизацию по умолчанию, а также простые представления и модель.

Проблема, с которой я сталкиваюсь, связана с функцией редактирования HttpPost. Я ожидаю, что в качестве параметра будет передан объект моего типа «MyObject», но он всегда возвращает значение null.

Вот мои функции редактирования из контроллера (функция Get работает должным образом):

 public ActionResult Edit(int? id)
{
    if (!id.HasValue)
        return RedirectToAction("Index");

    var item = (from obj in mDB.MyDatabaseObjects
                where obj.Id == id
                select obj).First();
    return View(item);
}

//
// POST: /Main/Edit/5

[HttpPost]
public ActionResult Edit(MyDatabaseObject someObject)
{
    var original = (from obj in mDB.MyDatabaseObjects
                    where obj.Id == someObject.Id
                    select obj).First();

    if (!ModelState.IsValid)
        return View(original);

    mDB.ApplyCurrentValues(original.EntityKey.EntitySetName, someObject);
    mDB.SaveChanges();

    return RedirectToAction("Index");
}
  

Обратите внимание, что мой (почти идентичный) Метод Create работает так, как ожидалось:

 [HttpPost]
public ActionResult Create([Bind(Exclude="Id")] MyDatabaseObject newObject)
{
    if (!ModelState.IsValid)
        return View();

    int max = mDB.MyDatabaseObjects.Max(data => data.TaskOrder);

    newObject.TaskOrder = max   1;
    mDB.AddToMyDatabaseObjects(newObject);
    mDB.SaveChanges();

    return RedirectToAction("Index");
}
  

Спасибо,

wTs

Ответ №1:

Убедитесь, что значения в вашем представлении для MyDatabaseObject находятся внутри формы. Подтвердите, что эти значения публикуются по запросу inspect.Сформируйте или используйте измените сигнатуру метода, чтобы использовать

Коллекция FormsCollection

просто для проверки публикуемых значений. Если он выбирает этот метод — он должен соответствовать свойствам поля формы — это, как правило, очень просто.

Комментарии:

1. Спасибо @Adam. Коллекция возвращалась, как ожидалось, просто не так, как ожидался тип (см. Мой ответ)

2. Примечание — удалил мой ответ, поскольку оказалось, что он также работает не так, как ожидалось. Я не понимаю, почему создание и удаление записей работают одновременно, возвращая правильный объект.

3. пришлите мне свой пример проекта — я заставлю его работать : ) adam.tuliper на gmail

4. Хотел бы я это сделать, но она наполовину проприетарная, а я здесь новичок. 🙂

5. все в порядке.. собираюсь уйти на какой-нибудь УЖИН ух ты! сегодня пятница!