MVC在控制器中填入值

时间:2016-07-10 13:46:00

标签: c# asp.net asp.net-mvc

当想要从'后端'填写一些模型值时,使用什么设计范例?例如我有电影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);
} 

1 个答案:

答案 0 :(得分:0)

从设计角度来看,您应该创建一个专门用于视图的模型,然后在控制器上,使用发送到客户端的数据填充现有模型,并使用您需要保存到数据库的其他值(即CreateOn,LastModified等。)。

希望它有所帮助!