1

对于一般开发和MVC,我很新。 我想显示我的存储库在我的MVC网站中引发的异常。我创建了View:“Error”来处理错误消息。 我的主控制器如下所示:在MVC中显示捕获异常

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

应该如何我的错误 - 查看外观就像显示错误消息。目前看起来如下:

@model BankMVC.Models.ErrorModel 

@{ 
    ViewBag.Title = "Error"; 
} 

<h2>Error</h2> 

任何澄清表示赞赏。

回答

0

我看到您正在重定向到名为“Error”的动作,以显示错误页面。但是我没看到的是一个名为“Error”的操作方法。请执行下列操作

中创建一个名为“错误”

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必须张贴您的误差模型控制器的另一种方法。

在错误查看

此外,您还可以通过改变这样的

视图利用该错误信息这将显示您的错误信息,以及