1

私はcreated_date列を持つDBテーブルを持っていますが、新しいレコードを追加するだけでうまくいきます

 DateTime.Now 

私の問題は、レコードを編集するとエラーがスローされることです。

created_date 値が「1/1/0001」であるため、SqlDateTime オーバーフロー

created_date を非表示フィールドとして表示してみましたが、うまくいきました。
フォームに created_date を追加しないことはできますか?

4

2 に答える 2

3

この素晴らしい質問に答える前に、投稿していただきありがとうございます。

null フィールドを保存しないようにするには、EDIT/UPDATE コントローラーを手動でコーディングする必要があります。

これは、更新モデルの手動コーディングのサンプルです。null フィールドに入力するには、データベースから古い値を取得する必要があります。

    [HttpGet]
    public ActionResult UpdateAction(Model model)
    {
        // Get the current values of model
        var _oldModel = db.GetModel(model.Id);

        // Specify or change only the field that is needed to Update

        _oldModel.property1 = model.property1;

        db.Model.Save();
于 2013-05-02T09:25:55.190 に答える
0

created_date 列を非表示としてビューに追加する必要があります。非表示を追加しない場合、コントローラーはおそらくデフォルト値を受け取ります。おそらく、フィールドのタイプが DateTime であるため、「1/1/0001」はその範囲を超えています。タイプを Datetime2 に変更すると、「1/1/0001」が受け入れられます。

- - - - - - - アップデート - - - - - - - - - - - -

問題を再現しました。隠しフィールドをビューに配置するのが最善の方法だと思います。ビューがモデルをコントローラーに返すと、すべてのフィールドが送信され、1 つのフィールドが欠落している場合は null でなければならないためです。ただし、列が null 可能ではないため、ビューは「1/1/0001」を送信し、この値は Datetime には受け入れられません。

于 2013-01-24T06:08:24.660 に答える