私はcreated_date列を持つDBテーブルを持っていますが、新しいレコードを追加するだけでうまくいきます
DateTime.Now
私の問題は、レコードを編集するとエラーがスローされることです。
created_date 値が「1/1/0001」であるため、SqlDateTime オーバーフロー
created_date を非表示フィールドとして表示してみましたが、うまくいきました。
フォームに created_date を追加しないことはできますか?
私はcreated_date列を持つDBテーブルを持っていますが、新しいレコードを追加するだけでうまくいきます
DateTime.Now
私の問題は、レコードを編集するとエラーがスローされることです。
created_date 値が「1/1/0001」であるため、SqlDateTime オーバーフロー
created_date を非表示フィールドとして表示してみましたが、うまくいきました。
フォームに created_date を追加しないことはできますか?
この素晴らしい質問に答える前に、投稿していただきありがとうございます。
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();
created_date 列を非表示としてビューに追加する必要があります。非表示を追加しない場合、コントローラーはおそらくデフォルト値を受け取ります。おそらく、フィールドのタイプが DateTime であるため、「1/1/0001」はその範囲を超えています。タイプを Datetime2 に変更すると、「1/1/0001」が受け入れられます。
- - - - - - - アップデート - - - - - - - - - - - -
問題を再現しました。隠しフィールドをビューに配置するのが最善の方法だと思います。ビューがモデルをコントローラーに返すと、すべてのフィールドが送信され、1 つのフィールドが欠落している場合は null でなければならないためです。ただし、列が null 可能ではないため、ビューは「1/1/0001」を送信し、この値は Datetime には受け入れられません。