Функция редактирования сообщения ASP MVC имеет нулевой параметр - PullRequest
1 голос
/ 01 июня 2011

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

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

Вот мои функции редактирования с контроллера (функция 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 Ответ

2 голосов
/ 01 июня 2011

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

FormsCollection collection
просто для проверки того, что значения публикуются.Если он выбирает этот метод - он должен сопоставлять свойства с полем формы - это обычно очень просто.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...