控制器:
namespace MvcMusicStore.Controllers
{
public class StoreController : Controller
{
MusicStoreEntities db = new MusicStoreEntities();
public ActionResult Index()
{
var genres = db.Genres.ToList();
return View(genres);
}
public ActionResult Browse(string genre)
{
var g = db
.Genres
.Include("Albums")
.FirstOrDefault(x => x.Name == genre);
if (g == null)
{
ViewBag.ErrorMessage = string.Format("Genre: {0} does not exist.", genre);
TempData["ErrorMessage"] = string.Format("Genre: {0} does not exist.", genre);
return View("Error");
}
return View(g);
}
public ActionResult Details(int id)
{
return View();
}
}
}
查看:
@model System.Web.Mvc.HandleErrorInfo
@{
ViewBag.Title = "Error";
}
<h2>
ViewBag.ErrorMessage: @ViewBag.ErrorMessage
</h2>
<h2>
TempData["ErrorMessage"]: @TempData["ErrorMessage"]
</h2>
问题:
要将数据发送到视图,建议使用哪一个?使用ViewBag或TempData?
答案 0 :(得分:3)
取决于您的网页工作流程。如果您使用Post-Redirect-Get模式,则必须使用TempData,因为重定向后ViewBag将不可用。
我个人每个视图只使用一个模型,如果需要显示错误,我会将值注入到ModelState中。这就是ModelState的用途。