Сообщения проверки / ошибки в ASP.Net MVC 2 View, не связанные со свойством - PullRequest
2 голосов
/ 25 сентября 2010

Какой шаблон можно использовать для отображения ошибок в представлении MVC 2, которые не связаны ни с одним свойством?

Например, когда я вызываю веб-службу для обработки данных формы, веб-служба может вернуть ошибку или вызвать исключение. Я хотел бы отобразить удобную для пользователя версию этой ошибки, но у меня нет логических средств, чтобы связать ошибку с любым заданным свойством модели.

UPDATE:

Попытка использовать этот код в соответствии с предложением, но сводное сообщение не отображается:

MyPage.spark:

Html.ValidationSummary(false, "Oopps it didn't work.");

Контроллер:

ViewData.ModelState.AddModelError("_FORM", "My custom error message.");
// Also tried this: ViewData.ModelState.AddModelError(string.Empty, "My custom error message.");
return View();

ОБНОВЛЕНИЕ 2

Что это значит?

рядом с каждым полем.

Вместо того, чтобы всегда отображать все ошибки валидации, Html.ValidationSummary вспомогательный метод есть новая опция для отображения только ошибки на уровне модели. Это позволяет ошибки на уровне модели для отображения в резюме проверки и специфичные для поля ошибки, которые будут отображаться рядом с каждым полем.

Источник: http://www.asp.net/learn/whitepapers/what-is-new-in-aspnet-mvc#_TOC3_14

В частности, , как добавить в модель ошибку уровня модели (в отличие от ошибки, связанной с полем)?

ОБНОВЛЕНИЕ 3:

Сегодня утром я заметил, что Html.ValidationSummary вообще не отображает никаких ошибок, даже ошибок свойств. Пытаюсь разобраться почему.

1 Ответ

2 голосов
/ 25 сентября 2010

Простое добавление пользовательской ошибки к объекту ModelState в сочетании с методом расширения ValidationSummary() должно помочь. Я использую что-то вроде "_FORM" для ключа ... просто, чтобы оно не конфликтовало ни с какими полями.

Что касается шаблонов, я настроил их так, чтобы мой уровень бизнес-логики (вызываемый через службы из контроллера) выдавал пользовательское исключение, если что-то не так, что я хочу отобразить в представлении. Это пользовательское исключение содержит свойство Dictionary<string, string>, в котором есть ошибки, которые я должен добавить к ModelState.

HTHS,
Charles

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