我有以下自定义验证器:
public class CAuthorize : AuthorizeAttribute
{
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
//if ajax request set status code and end responcse
if (filterContext.HttpContext.Request.IsAjaxRequest())
{
filterContext.HttpContext.Response.TrySkipIisCustomErrors = true;
filterContext.HttpContext.Response.Write(/*some data*/);
filterContext.HttpContext.Response.End();
}
else
{
base.HandleUnauthorizedRequest(filterContext);
}
}
}
以及以下行动
[HttpPost]
[CAuthorize]
public ActionResult Comment(Comment comment_obj)
{
if (ModelState.IsValid)
{
this.tblSomthing.comments.Add(comment_obj);
this.db.SaveChanges();
}
return /*some view*/
}
为什么当验证器失败时执行操作并保存DB记录但响应正确(验证器中设置的那个) 我只想在验证器失败时停止执行操作。
答案 0 :(得分:0)
您知道某个操作需要返回一个视图,以便用户看到某种形式的输出吗?在控制器中使用Response.Write
或Response.End
不会执行任何操作。
无论如何,你有一个属性,而不是验证器。 如果它是验证器,它将在视图中使用的模型中,应用于属性。