嗨,我是这个网站的新手,我在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")
但这不起作用。任何帮助都将得到真正的赞赏
谢谢
答案 0 :(得分:5)
只需在控制器中添加
TempData["Message"] = "Saved";
然后在你看来:
@if(TempData["Message"] != null)
{
<p>@TempData["Message"].ToString()</b> @* or whatever element you need to show*@
}
在您的视图级别,您可以对消息执行任何操作(可能使用jQuery进行闪存):
更新:我用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>
}