保存项目时的消息框

时间:2012-01-08 19:24:13

标签: c# asp.net asp.net-mvc-3 razor

嗨,我是这个网站的新手,我在C#MVC3中遇到了我的控制器问题,当我放弃寻找答案,因为我花了两周的时间就决定加入这里。

问题是我在应用程序中创建项目时需要一条非常简单的确认消息。我尝试了If语句,但我无法正确理解上下文。亲爱的,请各位帮帮我谢谢。我的代码:

    //
    // POST: /News/Create

    [HttpPost]
    public ActionResult Create(BooksItem booksitem)
    {
        try
        {

            using (var db = new BooksForever2())
            {
                db.NewsItems.Add(booksitem);
                db.SaveChanges();
            }


            return RedirectToAction("Index");
        }
        catch
        {
            return View();
        }
    }

创建工作正常我可以添加书籍并保存,但我想在保存消息时显示,以便向用户显示已保存的内容。我试过了:Viewbag.Message("Saved") 但这不起作用。任何帮助都将得到真正的赞赏

谢谢

2 个答案:

答案 0 :(得分:5)

只需在控制器中添加

TempData["Message"] = "Saved";

然后在你看来:

@if(TempData["Message"] != null)
{
  <p>@TempData["Message"].ToString()</b> @* or whatever element you need to show*@
}

在您的视图级别,您可以对消息执行任何操作(可能使用jQuery进行闪存):

jquery: Flash messages

更新:我用TempData替换了ViewBag,因为我注意到你正在进行重定向,在这种情况下,ViewBag不会保留,但TemData会

答案 1 :(得分:0)

您希望在哪里显示确认消息?在您已经使用的相同编辑表单上,或返回索引/列表页面?

现在,在您的方法结束时,您将重定向到索引操作/页面:

return RedirectToAction("Index");

结果是,将加载索引页面,并且它将完全不知道从其他地方来的东西是保存的。

我认为你的两个选择是: 1)留在当前页面,并显示消息。您可以将该消息添加到ViewBag中,如同已经提到的那样:

ViewBag.Message = "Saved"`

然后像这样显示:

@if(ViewBag.Message != null)
{
   <p>@ViewBag.Message</p>
}

然后确保删除RedirectToAction并返回默认视图,否则仍然会将您弹回到索引页面。

2)或者,您可以将用户重定向回索引页面,传递要显示的消息,然后让索引页面查找该消息。因此,当您调用RedirectToAction时,请包含查询字符串参数: ViewBag.Message

return RedirectToAction("Index", new { Message="Saved" });

哪会将您重定向到“... / yourControllerName / Index?Message = Saved”。然后,您可以将其添加到您的索引操作方法:

if(!string.IsNullOrEmpty(QueryString["Message"]))
{
   ViewBag.Message = QueryString["Message"];
}

并在索引视图中包含相同的视图代码:

@if(ViewBag.Message != null)
{
   <p>@ViewBag.Message</p>
}