2012-02-06 49 views
0

我想硬编码DateTime.Now(在前端)当一个新的记录创建时。不过,我不想看到这些字段,因为他们不需要输入。使用下面,我抛出 “对象引用不设置到对象的实例。”绑定DateTime.Now使用MVC3剃刀

控制器上市代码:

[HttpPost] 
public ActionResult Create(tbl_one tbl_one) 
{ 
    if (ModelState.IsValid) 
    { 
     db.tbl_one.Add(tbl_one); 
     db.SaveChanges(); 
     return RedirectToAction("Index"); 
    } 

    return View(tbl_one); 
} 

型号

public System.DateTime Created { get; set; } 

查看

<div class="editor-field"> 
    @Html.HiddenFor(model => model.Created, Model.Created = DateTime.Now) 
    @Html.ValidationMessageFor(model => model.Created) 
</div> 
+1

哪条线是扔? – JaredPar 2012-02-06 15:38:05

+0

@ Html.HiddenFor(model => model.Created,Model.Created = DateTime.Now) – 2012-02-06 16:28:30

回答

0

因为型号对象尚未设置,您需要实例化它,当你返回创建一个GET请求观点:

[HttpGet] 
public ActionResult Create(tbl_one tbl_one) 
{ 
    return View(new tbl_one()); 
} 
0

说实话,你可能不该”不要在前端做这件事。如果您在前端使用像DateTime.Now这样的硬编码值创建隐藏字段,那么您仍然必须在后端检查它以确保某人不会向您发送错误值作为安全预防措施。我建议您只需将其设置在后端,以便您只需担心一次。

2

部分信用到:MVC3 HTMLHelper defaults

修复:

@Html.HiddenFor(model => model.Created, new { @Value = System.DateTime.Now })