Asp.Net Mvc - Отрисовка частичного вида - Управление ошибками

Я получил вызов страницы aspx ListArticles со следующим кодом:

<% Html.RenderPartial("Create", new Models.Article()); %>

Create - это частичное представление (Create.ascx).

В моем контроллере получилось примерно так:

if (!ModelState.IsValid) { 
     return View();
}

Итак, проблема в том, что представление, созданное return View();, не отображает хорошее представление. Он должен отображать представление ListArticles, выделяя ошибки в частичном представлении Create, но отображать только представление Create.ascx.

Есть ли способ справиться с этим?


person Melursus    schedule 20.01.2010    source источник
comment
Вместо этого используйте Html.RenderAction ??   -  person Martin    schedule 20.01.2010
comment
Согласился с Мартином. Использование Html.RenderAction инкапсулирует все эти функции в свою собственную комбинацию «Контроллер / Представление». Затем вы можете делать в этом настраиваемом контроллере так, как считаете нужным.   -  person Robert Harvey    schedule 20.01.2010
comment
Я пытаюсь использовать вместо этого Html.RenderAction и получаю ту же проблему. У вас есть какой-либо пример или ссылка, показывающая, как это сделать (с помощью создания)?   -  person Melursus    schedule 21.01.2010


Ответы (3)


В этой ситуации я предлагаю встроить форму в представление, которое необходимо публиковать и отображать ошибки, которые вы используете Ajax.BeginForm вместо частичных представлений. Частичные виды больше подходят для демонстрации сценариев.

person ali62b    schedule 20.01.2010

Вы уверены, что предоставили весь код?

в вашем контроллере вы возвращаете представление, но не передаете ему модель.

так что вам нужен Return View (статьи) или что-то в этом роде. В случае ошибки вам все равно нужно вернуть коллекцию или модель, которые вы использовали для визуализации представления в первую очередь.

person griegs    schedule 20.01.2010

У вас может быть имя действия как «Создать», поэтому оно показывает только представление Create.ascx. Попробуйте вместо этого ввести следующий код

if (!ModelState.IsValid) { 
     return View("ListArticles");
}

У вас должен быть Html.ValidationMessage () в вашем Create.ascx, чтобы увидеть ошибки проверки.

person San    schedule 20.01.2010