Asp.net mvc 未在HTTPost上填充模型
我有一个create操作,它不会将CreatedOn和CreatedBy发送回HttpPost创建操作 这些属性不是用户可定义的属性,理想情况下,我根本不希望它们显示在表单上。那么,我如何将这些属性放入模型中,而不将它们放在表单本身上呢?它们应该是表单上的隐藏字段吗 控制器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
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,
禁用
=>根本不传递,只读
=>传递,但用户无法修改。但是,由于它是一个隐藏字段,因此不必为任何禁用
或只读
而烦恼。