MVC3 Razorを使用してDateTime.Nowをバインドする

ハードコードDateTime.Now (フロントエンド)新しいレコードが作成されたらしたいと思います。しかし、私は彼らが入力を必要としないので、フィールドを見たくない。以下のコードを使用して、 "オブジェクト参照がオブジェクトのインスタンスに設定されていません。"

Controller:

[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);
}

Model:

public System.DateTime Created { get; set; }

View:

<div class="editor-field">
    @Html.HiddenFor(model => model.Created, Model.Created = DateTime.Now)
    @Html.ValidationMessageFor(model => model.Created)
</div>
0
どのラインが投げていますか?
追加された 著者 JaredPar,
@ Html.HiddenFor(モデル=> model.Created、Model.Created = DateTime.Now)
追加された 著者 Computer Guy,

3 答え

Partial Credit to: MVC3 HTMLHelper defaults

修正:

@Html.HiddenFor(model => model.Created, new { @Value = System.DateTime.Now })
2
追加された

Model オブジェクトはまだ設定されていないため、GETリクエストの Create ビューを返すときにインスタンス化する必要があります。

[HttpGet]
public ActionResult Create(tbl_one tbl_one)
{
    return View(new tbl_one());
}
0
追加された

正直言って、おそらくフロントエンドでやってはいけません。 DateTime.Now のようなハードコードされた値でフロントエンドに非表示のフィールドを作成した場合、バックエンドでチェックする必要があります。セキュリティ対策としての価値私は単にバックエンドで設定することをお勧めしますので、一度それについて心配する必要があります。

0
追加された