我目前在 asp.net mvc 中使用 ModelStateDictionary 来保存验证错误,然后传递给用户。尤其是能够使用 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);
}
}
它在这里正确设置,但是当我检查类型时它消失了。
编辑:事实证明这是一种愚蠢的做事方式,请参阅下面的答案。