绑定DateTime.Now使用MVC3 Razor

时间:2012-02-06 15:35:56

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

我想硬编码DateTime.Now (在前端)创建新记录时。但是我不想看到这些字段,因为它们不需要输入。使用下面列出的代码,我将“对象引用设置为未设置为对象的实例。

控制器

[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>

3 个答案:

答案 0 :(得分:2)

部分归功于:MVC3 HTMLHelper defaults

修正:

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

答案 1 :(得分:0)

由于尚未设置模型对象,因此在返回GET请求的创建视图时需要对其进行实例化:

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

答案 2 :(得分:0)

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