当想要从'后端'填写一些模型值时,使用什么设计范例?例如我有电影DB;用户可以制作电影。我想记录创建电影的人,CreateOn,LastModified。我的模型有UserId,CreatedOn,LastModified,...(名称,类型等)。生成的默认视图具有所有这些字段;我从创建视图中删除了CreatedOn,LastModified,UserId;现在当事情回到控制器中的Create函数时,模型无效。我通过Clear函数清除模型错误,然后在控制器中填入这3个值。但那时这是不对的; Clear也清除了任何其他验证错误。
public ActionResult Create([Bind(Include = "Name,Description,Genre")] Movie movie)
{
ApplicationUser user = System.Web.HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>().FindById(System.Web.HttpContext.Current.User.Identity.GetUserId());
ModelState.Clear();
movie.UserId = user.Id;
movie.CreatedOn = DateTime.UtcNow;
movie.LastModified = DateTime.UtcNow;
if (ModelState.IsValid)
{
db.Movies.Add(movie);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(movie);
}
答案 0 :(得分:0)
从设计角度来看,您应该创建一个专门用于视图的模型,然后在控制器上,使用发送到客户端的数据填充现有模型,并使用您需要保存到数据库的其他值(即CreateOn,LastModified等。)。
希望它有所帮助!