0
我正在使用ASP.NET Core和FluentValidation。在異常過濾器中處理驗證失敗,並重新呈現視圖
當POST操作接收無效的輸入,這是習慣性地重新渲染輸入表單視圖,以驗證錯誤:
if (!ModelState.IsValid)
return View("nameOfViewRenderedByGetAction", model);
但我的驗證是由FluentValidation,會拋出ValidationException
在服務實際執行, 。我想在異常過濾器中處理它:
public class ValidationFilterAttribute : ActionFilterAttribute, IExceptionFilter
{
public void OnException(ExceptionContext context)
{
// only handle ValidationException
var ex = context.Exception as ValidationException;
if (ex == null) return;
// re-render get action's view, or redirect to get action
// ??
}
}
我被困在「??」部分,因爲Core已經改變了許多類型的簽名,並且ExceptionContext
沒有提供我需要的數據來完成這項工作。
我該怎麼做?
它呈現的是特定視圖,而不是重定向。它呈現沒有驗證錯誤,以便信息丟失。 – grokky
您不能使用異常過濾器將異常轉化爲成功。但是你可以傳遞你需要的數據。我編輯了答案。 –