0
我正在做自定义错误处理。
我的代码:
的Global.asax:如何使用包含资源值的IController Execute()返回View?
public void Application_Error(Object sender, EventArgs e)
{
Exception exception = Server.GetLastError();
Server.ClearError();
var routeData = new RouteData();
routeData.Values.Add("controller", "ErrorPage");
routeData.Values.Add("action", "Error");
routeData.Values.Add("exception", new HandleErrorInfo(exception, "ErrorPage", "Error"));
if (exception.GetType() == typeof(HttpException))
{
routeData.Values.Add("statusCode", ((HttpException)exception).GetHttpCode());
}
else
{
routeData.Values.Add("statusCode", 500);
}
Response.TrySkipIisCustomErrors = true;
var controller = new ErrorPageController();
((IController)controller).Execute(new RequestContext(new HttpContextWrapper(Context), routeData));
Response.End();
}
控制器:
public class ErrorPageController : Controller
{
public ActionResult Error(int statusCode, HandleErrorInfo exception)
{
Response.StatusCode = statusCode;
ViewBag.StatusCode = statusCode.ToString();
return View(exception);
}
}
查看:
@model System.Web.Mvc.HandleErrorInfo
@{
ViewBag.Title = Resource.Error+ " " + (!String.IsNullOrEmpty(ViewBag.StatusCode)) ? ViewBag.StatusCode : "500" ;
}
<h1 class="error">@(Resource.Error + " " + (!String.IsNullOrEmpty(ViewBag.StatusCode)) ? ViewBag.StatusCode : "500" +". "+ Resource.Sorry):</h1>
<h4><a href ="@Url.Action("Index","Home")"><i>@Resource.MainPage</i></a></h4>
这基本上是略有改变this答案。
如果我的视图包含任何Resource
值,则浏览器只会获取错误代码,不会显示页面。如果我删除所有这些,工作得很好。任何想法如何使视图与资源一起工作?
另外,应该从Application_Error
controller
处置的方法吗?
有时资源不会出现,如果文件不完全满。例如,如果您的resource.rsx文件有20个条目,那么resource.lang.resx必须具有相同的20个条目。不要紧,你在 –
@DaniilT时不要使用它。得到它了。也许会尝试以后完全填充文件。在这种情况下,资源值是否可能仅适用于一个视图? –
我把我的答案。可能......我不太确定。但是,当资源文件不全时,本地化没有出现。 –