我对一般的开发和MVC都很陌生。 我试图在我的MVC站点中显示我的存储库抛出的异常。我创建了View:“Error”来处理错误消息。 我的主控制器看起来如下:
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 :(得分: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.
}
请注意我已使用您发布的错误模型。
同样在错误视图中,您可以通过更改此视图
来利用错误消息@model BankMVC.Models.ErrorModel
@{
ViewBag.Title = "Error";
}
<h2>Error</h2>
<h2>Message : @Model.Error</h2>
这也将显示您的错误消息