道歉,如果這是一個愚蠢的問題,但我只是想知道最好的方式去重定向到一個錯誤頁面當一個模型中發生錯誤在asp.net mvc3 。從ASP.NET中的模型重定向mvc3
總之,我有一個ApplicationController中,所有的控制器繼承,其中,在「OnActionExecuting」功能,檢查是否用戶使用Internet Explorer。
如果是這樣,我把我的誤差模型的函數(我有,因爲我要記錄的錯誤在數據庫中),則應該將用戶重定向到告訴下載Chrome瀏覽器的錯誤頁面。
的ApplicationController
public class ApplicationController : Controller
{
public string BASE_URL { get; set; }
public ApplicationController() {}
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
BASE_URL = Url.Content("~/");
ErrorModel err = new ErrorModel();
String userAgent;
userAgent = Request.UserAgent;
if (userAgent.IndexOf("MSIE") > -1) {
err.cause("browser", "redirect", "some other info");
}
}
}
ErrorModel
public void cause(string _errCode, string strAction, string _otherInfo = "") {
this.error_code = _errCode;
this.error_otherInfo = _otherInfo;
try {
this.error_message = dctErrors[_errCode.ToLower()];
} catch (KeyNotFoundException) {
this.error_message = "Message not found.";
}
StackTrace sT = new StackTrace(true);
String[] filePathParts = sT.GetFrame(1).GetFileName().Split('\\');
this.error_filename = filePathParts.Last();
this.error_lineNo = sT.GetFrame(1).GetFileLineNumber();
this.error_function = sT.GetFrame(1).GetMethod().ReflectedType.FullName;
this.error_date = DateTime.Now;
this.error_uid = 0; //temporary
if (strAction == "redirect") {
//this is what I would like to do - but the "response" object does not
//exist in the context of the model
Response.Redirect("Error/" + _errCode);
} else if (strAction == "inpage") {
} else {
//do nothing
}
}
我知道在這個特殊的例子,其誤差不實際發生的模型,所以我可以從控制器重定向。但是我希望能夠調用一個函數,如果可能的話,它會記錄並重定向,因爲這對於可能發生的許多其他錯誤是必需的。
我可能會對此完全錯誤的方式,在這種情況下,我當然是開放的變化。謝謝您的幫助!
業務邏輯不應該在你的模型。將它移到你的控制器。 – Jesse
業務邏輯不應該在控制器中! – c0deNinja