ASP .NET MVC - создание частичного представления работает только для результата действия Edit, но не для Create. - PullRequest
1 голос
/ 09 февраля 2011

Я создал частичное представление для использования представлением «Редактировать» моей модели. Я могу успешно редактировать записи, но при использовании частичного представления для моего представления «Создать» я получаю исключение нулевой ссылки.

Это мой частичный взгляд:

@model MvcA.Models.Reason       

        @Html.LabelFor(model => model.reason)
        @Html.EditorFor(model => model.reason)

        @Html.LabelFor(model => model.Contract)
        @Html.DropDownList("ContractId",
        new SelectList(ViewBag.Contract as System.Collections.IEnumerable,
       "ContractId","Name",Model.ContractID));

И POST ActionResult:

[HttpPost]
public ActionResult Create(Reason reason)
{
   if (ModelState.IsValid)
            {
                db.Reason.Add(reason);
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            //invalid ...

GET Создать:

public ActionResult Create()
    {
        ViewBag.Contract = db.Contract.OrderBy(g => g.Name).ToList();
        var reason = new Reason();
        return View(reason);
    } 

После ввода / выбора допустимых значений отправка формы приведет к тому, что Visual Studio завершит работу с «DropDownList», найденным в частичном представлении с «NullReferenceException is nothandled».

Как определить, что является причиной ошибки NULL? (Я новичок в MVC)

ОБНОВЛЕНИЕ : Похоже, ошибка связана с методом [HttpPost] Create в моем контроллере. Я назвал входной класс, используя то же имя, что и одно из полей в модели ... это, кажется, сломало программу с исключением нулевой ссылки.

Ответы [ 2 ]

1 голос
/ 09 февраля 2011

Когда вы создаете частичное представление, попробуйте:

<% Html.RenderPartial("YouPartialViewName", new Reason()); %>
1 голос
/ 09 февраля 2011

При публикации в действии создания модель действительна или недействительна при получении исключения?Если он недействителен, скорее всего, потому что вы возвращаете представление, чтобы показать форму с проверкой, но при этом отсутствуют некоторые требования для этого представления (как, например, ViewBag.Contract заполняется).Если вы полностью покажете оба действия «Создать», это будет легче проверить.

...