我试图使用ViewBag属性在我的一个视图上显示异常消息。但是,无论我在ViewBag属性中放置什么,它都不会显示在我的视图中。
我试过发送异常和一个简单的字符串,这是来自控制器的方法:
public ActionResult Create([Bind(Include="IDHardware,PartNo,SerialNo,CatagoryType,IsOnLoan")] Hardware hardware)
{
if (ModelState.IsValid)
{
try
{
db.Hardwares.Add(hardware);
db.SaveChanges();
return RedirectToAction("Index");
}
catch (DbEntityValidationException ex)
{
// Retrieve the error messages as a list of strings.
var errorMessages = ex.EntityValidationErrors
.SelectMany(x => x.ValidationErrors)
.Select(x => x.ErrorMessage);
// Join the list to a single string.
var fullErrorMessage = string.Join("; ", errorMessages);
// Combine the original exception message with the new one.
var exceptionMessage = string.Concat(ex.Message, " The validation errors are: ", fullErrorMessage);
ViewBag.ErrMsg = exceptionMessage;
return RedirectToAction("BarcodeNotUnique");
}
}
ViewBag.CatagoryType = new SelectList(db.Catagories, "CatagoryName", "CatagoryName", hardware.CatagoryType);
return View(hardware);
这是视图BarcodeNotUnique:
的html @model TechDemoStockWebsite.Models.Hardware
@{
ViewBag.Title = "BarcodeNotUnique";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<div class="jumbotron">
<h1>@ViewBag.ErrMsg</h1>
<h1>@ViewBag.example</h1>
<p class="lead"> @Html.ActionLink("Please try again", "Create")</p>
<p class="lead"> or return to list of @Html.ActionLink("available hardware", "Index")</p>
</div>
有什么想法吗?
BR
克里斯
答案 0 :(得分:2)
如果您进行重定向,ViewData
中的任何内容都会丢失。在您的代码中,您要在ViewData
上设置一个属性,然后执行return RedirectToAction("BarcodeNotUnique");
。如果您确实需要进行重定向,则可以改为使用TempData
。
有关ViewData
和TempData
的详细信息,请参阅此问题:ViewBag, ViewData and TempData