MVC Controller中新创建的项的ViewData

时间:2013-12-05 03:33:26

标签: c# asp.net-mvc

我正在尝试创建一个ViewData,将新创建的项目的标题从我的控制器传递给视图。最好的方法是什么?任何帮助将不胜感激。

以下是我的控制器创建操作的示例:

public ActionResult Create(Movie newMovie) {

if (ModelState.IsValid)
{
    db.AddToMovies(newMovie);
    db.SaveChanges();

    return RedirectToAction("Index");
}
else
{
    return View(newMovie);
} }

2 个答案:

答案 0 :(得分:1)

由于您要重定向到另一个Action,您需要指定要传递给它的内容,如下所示:

public ActionResult Index(string title)
{
    //take the title and put it into your ViewBag or view model
    ViewBag.NewTitle = title;
    return View();
}

因此,在您的示例中,您将执行以下操作为Index操作提供新标题:

return RedirectToAction("Index", new { title = newMovie.title });

然后在你的视图中你可以做到:

<h1>@ViewBag.NewTitle was created!</h1>

答案 1 :(得分:1)

假设您的Index操作正在使用Index.cshtml视图,并且该视图的ViewModelstring,您可以尝试以下操作:

if (ModelState.IsValid)
{
    db.AddToMovies(newMovie);
    db.SaveChanges();

    return View("Index", newMovie.Title);
}

或者,如果您的ViewModel不仅仅是电影标题,则可以使用ViewData来获得相同的效果:

if (ModelState.IsValid)
{
    db.AddToMovies(newMovie);
    db.SaveChanges();

    ViewData["MovieTitle"] = newMovie.Title;

    return View("Index");
}