1

Je suis assez nouveau pour le développement en général et MVC. J'essaie d'afficher une exception qui a été lancée par mon référentiel, sur mon site MVC. J'ai créé View: "Error" pour gérer le message d'erreur. Mon principal regard du contrôleur comme suit:Afficher une exception de capture dans 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 }); 
      } 

     } 

    } 
} 

ma vue principale du contrôleur se présente comme suit:

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

} 

J'ai créé un modèle d'erreur qui se présente comme suit:

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

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

Comment devrait my Error-View look Aime afficher le message d'erreur. Il se présente actuellement comme suit:

@model BankMVC.Models.ErrorModel 

@{ 
    ViewBag.Title = "Error"; 
} 

<h2>Error</h2> 

toute clarification est appréciée.

Répondre

0

Je vois que vous redirigez vers une action nommée "Erreur" pour afficher votre page d'erreur. Mais ce que je ne vois pas est une méthode d'action au nom de "Erreur". Effectuez les opérations suivantes

Créer une autre méthode dans le contrôleur nommé « Erreur »

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

S'il vous plaît noter que j'ai utilisé votre modèle d'erreur u ont posté.

également dans la vue d'erreur, vous pouvez utiliser le message d'erreur en modifiant votre point de vue comme celui-ci

Cela permet d'afficher votre message d'erreur ainsi