抱歉,如果这是一个愚蠢的问题,但我只是想知道当asp.net mvc3中的模型发生错误时重定向到错误页面的最佳方法。
简而言之,我有一个所有控制器都继承的 applicationController,它在“OnActionExecuting”函数中检查用户是否正在使用 Internet Explorer。
如果是,我在我的错误模型中调用一个函数(我有这个函数是因为我想在数据库中记录错误),然后它应该将用户重定向到一个错误页面,告诉下载 chrome。
应用控制器
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");
}
}
}
错误模型
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
}
}
我知道在这个特定的例子中,模型中实际上并没有发生错误,所以我可以从控制器重定向。但我希望能够调用一个函数,该函数将记录并在可能的情况下重定向,因为这对于可能发生的许多其他错误是必要的。
我可能会以完全错误的方式解决这个问题,在这种情况下,我当然愿意改变。谢谢您的帮助!