1

私は一般的な開発とMVCでかなり新しいです。 MVCサイトでリポジトリからスローされた例外を表示しようとしています。エラーメッセージを処理するためにView: "Error"を作成しました。 私のメインコントローラの外観は、次のように私は見えエラーモデルを作成したMVCでキャッチ例外を表示

@model BankMVC.Models.DepositingWithdrawingViewModel 

@{ 
    ViewBag.Title = "Withdraw"; 
} 

<h2>Withdraw</h2> 


@using (Html.BeginForm()) 
{ 
    @Html.AntiForgeryToken() 

    <div class="form-horizontal"> 
     <h4>Withdraw from Bank Account</h4> 
     <hr /> 
     @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 
     <div class="form-group"> 
      @Html.LabelFor(model => model.BankAccountId, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.EditorFor(model => model.BankAccountId, new { htmlAttributes = new { @class = "form-control" } }) 
       @Html.ValidationMessageFor(model => model.BankAccountId, "", new { @class = "text-danger" }) 
      </div> 
     </div> 

     <div class="form-group"> 
      @Html.LabelFor(model => model.BankAccountTypeId, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.EditorFor(model => model.BankAccountTypeId, new { htmlAttributes = new { @class = "form-control" } }) 
       @Html.ValidationMessageFor(model => model.BankAccountTypeId, "", new { @class = "text-danger" }) 
      </div> 
     </div> 

     <div class="form-group"> 
      @Html.LabelFor(model => model.Balance, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.EditorFor(model => model.Balance, new { htmlAttributes = new { @class = "form-control" } }) 
       @Html.ValidationMessageFor(model => model.Balance, "", new { @class = "text-danger" }) 
      </div> 
     </div> 

     <div class="form-group"> 
      @Html.LabelFor(model => model.Amount, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.EditorFor(model => model.Amount, new { htmlAttributes = new { @class = "form-control" } }) 
       @Html.ValidationMessageFor(model => model.Amount, "", new { @class = "text-danger" }) 
      </div> 
     </div> 

     <div class="form-group"> 
      <div class="col-md-offset-2 col-md-10"> 
       <input type="submit" value="Withdraw" class="btn btn-default" /> 
      </div> 
     </div> 
    </div> 
} 

<div> 
    @Html.ActionLink("Back to List", "Index", "BankAccount") 
</div> 

@section Scripts { 
     @Scripts.Render("~/bundles/jqueryval") 

} 

次のように:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 

namespace BankMVC.Models 
{ 
    public class ErrorModel 
    { 
     public string Error { get; set; } 
    } 
} 

どのようにする必要があり、次のように

using BankMVC.Models; 
using BankMVC.WithdrawingService; 
using Pocos; 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 

namespace BankMVC.Controllers 
{ 
    public class WithdrawingController : Controller 
    { 
     WithdrawingServiceClient withdrawingClient; 

     public WithdrawingController() 
     { 
      withdrawingClient = new WithdrawingServiceClient(); 
     } 

     public ActionResult Withdraw(int Id, int TypeId) 
     { 
      BankAccount bankAccount = new BankAccount(); 
      bankAccount.BankAccountId = Id; 
      bankAccount.BankAccountTypeId = TypeId; 
      DepositingWithdrawingViewModel withdrawViewModel = 
       new DepositingWithdrawingViewModel(); 
      withdrawViewModel.BankAccountId = bankAccount.BankAccountId; 
      withdrawViewModel.Balance = bankAccount.Balance; 
      withdrawViewModel.BankAccountTypeId = bankAccount.BankAccountTypeId; 
      return View(withdrawViewModel); 
     } 

     [HttpPost] 
     public ActionResult Withdraw(DepositingWithdrawingViewModel withdrawViewModel) 
     { 
      BankAccount bankAccount = new BankAccount(); 
      bankAccount.BankAccountId = withdrawViewModel.BankAccountId; 
      bankAccount.BankAccountTypeId = withdrawViewModel.BankAccountTypeId; 

      try 
      { 
       withdrawingClient.Withdraw(withdrawViewModel.Amount, bankAccount); 
       return RedirectToAction("Index", "BankAccount"); 
      } 

      catch (Exception e) 
      { 
       return RedirectToAction("Error", new { message = e.Message }); 
      } 

     } 

    } 
} 

私のメインコントローラビューが見えます私のエラー - ビューの外観エラーメッセージを表示するようにします。現在のところ、次のようになります。

@model BankMVC.Models.ErrorModel 

@{ 
    ViewBag.Title = "Error"; 
} 

<h2>Error</h2> 

明らかになります。

答えて

0

エラーページを表示するには、「エラー」inorderという名前のアクションにリダイレクトされています。しかし、私が見ていないのは、 "エラー"という名前のアクションメソッドです。次

は「エラー」という名前のコントローラに

public ActionResult Error(string message) 
{ 
    var model = new ErrorModel(); 
    model.Error = message; 
    return View(model); // make sure your error view is named as "Error". Else u need to specify the view name in the return command. 
} 

を別の方法を作成してください、私はuが掲載されているあなたのエラーモデルを利用していることに注意してください。

また、エラー・ビューでは、これはあなたのエラーメッセージにも

が表示されます。この

のようなあなたのビューを変更することによって、エラー・メッセージを利用することができます