除了快速解决问题之外,我还只是想知道其他人在做什么。
问题是我使用ModelState向用户报告错误/验证,但是当我使用RedirectToAction()时,ModelState丢失了。为了克服这个问题,我在OnActionExecuting的替代中向基本 Controller (所有其他 Controller 继承)添加了一些代码:
if (TempData["ModelState"] != null && !ModelState.Equals(TempData["ModelState"]))
ModelState.Merge((ModelStateDictionary)TempData["ModelState"]);
在OnActionExecuted的替代中,我添加了:
TempData["ModelState"] = ModelState;
问题在于这意味着某些错误消息可能显示在错误的页面上。我只是在操作开始时运行
ModelState.clear()
,我知道它将要覆盖/更正当前错误,但是在某些情况下,它永远不会被清除并且错误会显示在奇怪的地方。其他人如何处理?任何想法欢迎。谢谢
最佳答案
我已经实现了这里提到的解决方案:
http://weblogs.asp.net/rashid/archive/2009/04/01/asp-net-mvc-best-practices-part-1.aspx
在第13点(使用PRG模式进行数据修改)中。
它看起来与您正在执行的操作非常相似,但使用的是 Action 筛选器,到目前为止,我还没有注意到错误页面上的任何错误消息。
关于c# - 使ModelState持久,但不能太持久,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4738419/