C# 保存项目时的消息框

C# 保存项目时的消息框,c#,asp.net,asp.net-mvc-3,razor,C#,Asp.net,Asp.net Mvc 3,Razor,大家好,我是这个网站的新手,我的控制器在C#MVC3上遇到了问题,当我放弃寻找答案时,我决定加入这里,因为我花了大约2周的时间 问题是,当我在应用程序中创建项目时,我需要一条非常简单的确认消息。我尝试了一个If语句,但无法获得正确的上下文。你能帮助我吗?谢谢。我的代码: // // POST: /News/Create [HttpPost] public ActionResult Create(BooksItem booksitem) {

大家好,我是这个网站的新手,我的控制器在C#MVC3上遇到了问题,当我放弃寻找答案时,我决定加入这里,因为我花了大约2周的时间

问题是,当我在应用程序中创建项目时,我需要一条非常简单的确认消息。我尝试了一个
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(“已保存”)
但这是行不通的。任何帮助都将不胜感激


谢谢你

把这个添加到你的控制器里就行了

TempData["Message"] = "Saved";
那么在你看来,

@if(TempData["Message"] != null)
{
  <p>@TempData["Message"].ToString()</b> @* or whatever element you need to show*@
}
@if(TempData[“Message”!=null)
{
@TempData[“Message”].ToString()@*或任何需要显示的元素*@
}
在视图级别,您可以对消息执行任何操作(可能使用jQuery刷新消息):


更新:我用TempData替换了ViewBag,因为我注意到您正在执行重定向,在这种情况下,ViewBag将不会持久,但是TemData将显示确认消息,您希望该消息显示在哪里?在您已经在的同一编辑表单上,还是回到索引/列表页面上

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

return RedirectToAction("Index");
这样做的结果是,索引页将被加载,并且它将完全不知道它从何处来并保存了某些内容

在我看来,你的两个选择是: 1) 停留在当前页面上,并显示消息。您可以将该消息添加到ViewBag,如前所述:

ViewBag.Message = "Saved"`
然后按如下方式显示:

@if(ViewBag.Message != null)
{
   <p>@ViewBag.Message</p>
}
这会将您重定向到“../yourControllerName/Index?Message=Saved”。然后,您可以将其添加到索引操作方法中:

if(!string.IsNullOrEmpty(QueryString["Message"]))
{
   ViewBag.Message = QueryString["Message"];
}
并在索引视图中包含相同的视图代码:

@if(ViewBag.Message != null)
{
   <p>@ViewBag.Message</p>
}
@if(ViewBag.Message!=null)
{
@查看包。留言

return RedirectToAction("Index", new { Message="Saved" });
}
我检查的不是空项,我已经清楚地说明了我的问题,我的add工作正常,我想要的是当有人进入一本书时,会显示一条消息说它已被添加。我只想要一些简单的东西,当一本书进入一个消息框或某种消息说它已被保存,就是这样。请记住,这里提供的答案通常由帮助过他们的人,而他们实际上没有将他们输入开发环境来验证语法。因此,您可能需要调整语法以使其正常工作。由于答案为您指明了正确的方向,甚至为您提供了95%的必要代码,因此有理由期望提问者花费最少的精力来让它工作,而不是在不理解的情况下将其放入应用程序。我首先尝试了第二个选项,并且if语句已放置在我的索引视图中,并且它显示为黑色文本。没有高亮显示任何内容,因此请更改该文本的格式以按需显示它。我的意思是它没有显示为代码,它在其中没有任何内容视图就像HTML文本如果我把@符号放在前面,如果QueryString显示错误并说“QueryString在当前上下文中不存在”,我的天哪,你至少要为此付出一点努力。我们不能开车去你家给你写密码。再次,学习一些基本的MVC,这样当我说“删除RedirectToAction并只返回默认视图”时,您实际上知道该语句的意思。如果你还没有达到这一点,那没关系,但是在这里的每个人都试图帮助你“你的代码不起作用”之前,先去学习基本知识。您的代码不起作用,我们正在提供有关如何修复它的建议,但归根结底,这是您的代码。拥有它。