模型未填充在HTTPpost上

时间:2011-04-10 13:59:16

标签: asp.net-mvc asp.net-mvc-3 controller

我有一个创建操作,它不会将CreatedOn和CreatedBy发送回HttpPost创建操作。

这些不是用户可定义的属性,理想情况下我根本不希望它们显示在表单上。那么如何将这些属性放入模型中,而不将它们放在表单本身上?它们应该是表单上隐藏的字段吗?

控制器

public virtual ActionResult Create()
    {
        var meeting = new Meeting
        {
            CreatedOn = DateTime.Now,
            CreatedBy = User.Identity.Name,
            StartDate = DateTime.Now.AddMinutes(5),
            EndDate = DateTime.Now.AddHours(3)
        };

        ViewBag.Title = "Create Meeting";
        return View(meeting);
    } 



    [HttpPost]
    public virtual ActionResult Create(Meeting meeting)
    {
        if (ModelState.IsValid)
        {

            _meetingRepository.InsertOrUpdate(meeting);
            _meetingRepository.Save();
            return RedirectToAction(MVC.Meetings.Details(meeting.MeetingId));
        } else {

            return View();
        }
    }

1 个答案:

答案 0 :(得分:2)

  

它们应该是表单上的隐藏字段吗?

是的,这绝对是传递它们的好方法。请注意,这不安全,因为用户可以伪造POST请求并修改它们,但在您的方案中可能没问题。

因此,如果您需要安全性,另一种方法是从数据存储中重新获取它们,因为用户无法在此表单中修改它们,因此它们没有更改。