我正在尝试创建一个ViewData,将新创建的项目的标题从我的控制器传递给视图。最好的方法是什么?任何帮助将不胜感激。
以下是我的控制器创建操作的示例:
public ActionResult Create(Movie newMovie) {
if (ModelState.IsValid)
{
db.AddToMovies(newMovie);
db.SaveChanges();
return RedirectToAction("Index");
}
else
{
return View(newMovie);
} }
答案 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
视图,并且该视图的ViewModel
为string
,您可以尝试以下操作:
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");
}