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
までは?
ファイルが完全にいっぱいでないとリソースが表示されないことがあります。たとえば、resource.rsxファイルに20個のエントリがある場合、resource.lang.resxには同じ20個のエントリが必要です。 –
@DaniilTでそれを使用しないことは重要ではありません。とった。後でファイルを完全に埋めようとします。この場合、1つのビューに対してのみリソース値が機能しない可能性がありますか? –
私は私の答えを入れました。おそらく...私は確信していません。しかし、すべてのリソースファイルでリソースがいっぱいでない場合、ローカリゼーションが現れないという状況があります。 –