除了快速解决问题之外,我还只是想知道其他人在做什么。

问题是我使用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/

10-12 22:31