Asp.net mvc 未在HTTPost上填充模型

Asp.net mvc 未在HTTPost上填充模型,asp.net-mvc,asp.net-mvc-3,controller,Asp.net Mvc,Asp.net Mvc 3,Controller,我有一个create操作,它不会将CreatedOn和CreatedBy发送回HttpPost创建操作 这些属性不是用户可定义的属性,理想情况下,我根本不希望它们显示在表单上。那么,我如何将这些属性放入模型中,而不将它们放在表单本身上呢?它们应该是表单上的隐藏字段吗 控制器 public virtual ActionResult Create() { var meeting = new Meeting { CreatedOn = D

我有一个create操作,它不会将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();
        }
    }
它们应该是表单上的隐藏字段吗

是的,这绝对是一个很好的传球方式。请注意,这是不安全的,因为用户可以伪造POST请求并修改它们,但在您的场景中这是可以的


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

我将尝试隐藏字段路由。如果我禁用隐藏文本框,那么它们会被传递回控制器,还是会被忽略?@Doozer1979,
禁用
=>根本不传递,
只读
=>传递,但用户无法修改。但是,由于它是一个隐藏字段,因此不必为任何
禁用
只读
而烦恼。