Способ избежать FormCollection для ASP.NET MVC? - PullRequest
1 голос
/ 27 октября 2009

Я очень нуб, когда дело доходит до ASP.NET MVC.

Я смотрю на начальный пример из надстройки ASP.NET MVC.

Я вижу, что нечто подобное было сгенерировано автоматически:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(int id, FormCollection collection)
{
    try
    {
        // TODO: Add update logic here
        return RedirectToAction("Index");
    }
    catch
    {
        return View();
    }
}

Я считаю, что это воняет, потому что я хочу использовать Entity Framework, где состояние объекта будет сохранено. Хотелось бы что-то похожее на:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(Person person)
{
    try
    {
        // TODO: Add update logic here
        return RedirectToAction("Index");
    }
    catch
    {
        return View();
    }
}

Обратите внимание, я вынул FormCollection и заменил его классом Person. - Я бы хотел этого, чтобы избежать волшебных струн. - Сохранение состояний объектов. - Более явно.

Это вообще возможно?

/ перепутано с MVC

Ответы [ 2 ]

3 голосов
/ 27 октября 2009

Да, это возможно! Элементы вашей формы должны иметь то же имя, что и свойства модели, которую вы пытаетесь представить. Этот процесс называется Binding, и вы можете узнать больше, если посмотрите на объект ModelBinder.

Для получения дополнительной информации взгляните на этот вопрос: Пример ASP.NET MVC редактирования нескольких дочерних записей .

2 голосов
/ 27 октября 2009

Да, хотя я настоятельно рекомендую использовать специальные модели представления / редактирования вместо использования ваших сущностей. Тем не менее, то, что вы показываете, будет работать, если в вашей форме достаточно информации для заполнения всех ненулевых свойств Person.

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