ViewBag属性不在View中显示

时间:2014-10-20 20:43:24

标签: asp.net-mvc

我试图使用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

克里斯

1 个答案:

答案 0 :(得分:2)

如果您进行重定向,ViewData中的任何内容都会丢失。在您的代码中,您要在ViewData上设置一个属性,然后执行return RedirectToAction("BarcodeNotUnique");。如果您确实需要进行重定向,则可以改为使用TempData

有关ViewDataTempData的详细信息,请参阅此问题:ViewBag, ViewData and TempData