2017-02-18 9 views
0

私はカスタムエラー処理を行っています。
マイコード:
Global.asaxの:返す方法IControllerでの表示リソース値を含むExecute()?

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); 
    } 
} 

ビュー:これは、基本的には少しthis答えを変更し

@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> 


ビューにResourceの値が含まれている場合、ブラウザはページなしでエラーコードのみを取得します。私はそれらのすべてを削除する場合、正常に動作します。どのようにアイデアはどのように見えるとresoucesで動作するのですか?
また、controllerからApplication_Errorまでは?

+1

ファイルが完全にいっぱいでないとリソースが表示されないことがあります。たとえば、resource.rsxファイルに20個のエントリがある場合、resource.lang.resxには同じ20個のエントリが必要です。 –

+0

@DaniilTでそれを使用しないことは重要ではありません。とった。後でファイルを完全に埋めようとします。この場合、1つのビューに対してのみリソース値が機能しない可能性がありますか? –

+0

私は私の答えを入れました。おそらく...私は確信していません。しかし、すべてのリソースファイルでリソースがいっぱいでない場合、ローカリゼーションが現れないという状況があります。 –

答えて

0

ファイルが完全ではない場合、リソースが表示されないことがあります。たとえば、リソースファイルのエントリが20個の場合、resource.lang.resxには同じ20個のエントリが必要です。あなたが当時それを使用していないことは重要ではありません

関連する問題