В настоящее время я использую ModelStateDictionary в asp.net mvc для хранения ошибок проверки и передачи обратно пользователю. Возможность проверить, является ли вся модель действительной с ModelState.IsValid особенно. Однако текущее приложение, над которым я работаю, должно иметь возможность сообщать о предупреждениях. Они не так критичны, поэтому содержимое формы можно сохранить, но их следует показать пользователю, чтобы при желании можно было выполнить какое-либо действие.
Я просматривал фреймворк, чтобы увидеть, есть ли какое-нибудь очевидное место для его расширения, чтобы я мог это сделать. Я думаю, что другой словарь с предупреждениями и подклассом ошибки модели называется предупреждением модели. Я не уверен, как заставить фреймворк использовать мои новые классы контейнеров в представлении и т. Д., Хотя я все еще хочу, чтобы все существующие ошибки работали.
Если кто-то пробовал что-то подобное или у меня есть какие-либо мысли, я был бы признателен за их вклад.
Обновление:
Я дошел до расширения ViewDataDictionary для добавления некоторых предупреждений
public class AetherViewDataDictionary : ViewDataDictionary
{
public AetherViewDataDictionary()
{
ModelStateWarning = new ModelStateDictionary();
}
public AetherViewDataDictionary(object model) : base(model)
{
ModelStateWarning = new ModelStateDictionary();
}
public AetherViewDataDictionary(ViewDataDictionary viewDataDictionary) : base(viewDataDictionary)
{
ModelStateWarning = new ModelStateDictionary();
}
public ModelStateDictionary ModelStateWarning { get; private set; }
}
Проблема, с которой я столкнулся сейчас, заключается в том, что когда я получаю код моего вида, это просто для отладки, я теряю тот факт, что это мой новый тип, поэтому, когда я пытаюсь привести его обратно и получить доступ мой новый словарь у меня нет радости.
public partial class Index : ViewPage<PageViewData>
{
protected override void SetViewData(ViewDataDictionary viewData)
{
base.SetViewData(viewData);
}
}
Здесь он установлен правильно, но когда я проверяю тип, он исчез.
Edit:
Это оказался глупый способ делать что-то, см. Ответ ниже.