0
我有以下的自定義驗證:爲AuthorizeAttribute定製的驗證仍然運行過程
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記錄保存但響應正確(在驗證器中設置的那個) 我只想在驗證器失敗時停止執行操作。
多數民衆贊成在正確的先生,但是當我們使用'[授權]'屬性的行動不能正確執行?多數民衆贊成我想要做的,併爲響應=>'Response.Write'返回正確的數據,而不是視圖。 – Hilmi
如果這個動作不應該執行,爲什麼你要在裏面測試Model.IsValid?這與你所說的相矛盾。再次,不要使用Response.Write。如果某件事情有效,那並不意味着它是好的做法。問題是你不明白你在做什麼。如果你更多地解釋你想做什麼,我可以幫你。 – Jeroen
首先,非常感謝您的時間,我想要的是簡單的我想返回簡單的數據(json),當用戶沒有被授權的行動和終止行動...更清晰。操作如您所見'評論',評論功能對於沒有登錄的用戶不可用。它的ajax調用我想在用戶未被授權時返回json數據...並且對於IsValid這個屬性是調用以檢查以下(最小/最大長度/所需...),我希望它現在更清楚。 .. 謝謝 – Hilmi