【问题标题】:How to return View with IController Execute() that contains Resource values?如何使用包含资源值的 IController Execute() 返回视图?
【发布时间】:2017-07-07 15:59:14
【问题描述】:

我正在做自定义错误处理。
我的代码:
Global.asax:

 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。知道了。也许稍后会尝试完全填充文件。在这种情况下,资源值是否可能仅适用于一个视图?
  • 我回答了。可能......我不太确定。但是我有一种情况,当所有资源文件中的资源未满时,本地化没有出现。

标签: c# asp.net asp.net-mvc error-handling resources


【解决方案1】:

如果文件未完全填满,有时资源不会出现。例如,如果您的资源文件有 20 个条目,那么 resource.lang.resx 必须有相同的 20 个条目。你当时不使用也没关系

【讨论】:

    猜你喜欢
    • 2018-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-25
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多