在执行操作之前执行ModelState.Clear()是否有任何不良影响?

时间:2017-10-19 20:55:49

标签: asp.net asp.net-mvc asp.net-mvc-5 modelstate

如果我们使用ajax调用来返回部分视图,那么action方法的响应可能会返回部分视图的缓存输出。已在多个SO帖hereherehere

上讨论了该问题

要解决问题,我必须在行动方法中执行ModelState.Clear()

我有几个使用Ajax调用返回部分视图的动作方法。所以我认为不是在每个方法中做ModelState.Clear(),我可以创建自定义ActionFilterAttribute,如下所示

public class NoCacheAttribute : ActionFilterAttribute
{
    public override void OnResultExecuting(ResultExecutingContext filterContext)
    {            
        filterContext.Controller.ViewData.ModelState.Clear();
        base.OnResultExecuting(filterContext);
    }
 }

然后将其注册到全局过滤器

    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {                    
        filters.Add(new NoCacheAttribute());
    }

这似乎工作正常。

但是我想知道在执行操作之前是否有任何不良影响ModelState.Clear()?如果没有,那么为什么这不是asp.net mvc中的默认行为

0 个答案:

没有答案