3

私のアプリケーションには、Documentsのリストを含む Index ページがあります。同じインデックス ページに AJAX フォームを含む新しいドキュメントを追加したいと考えています。ViewModel を使用してNewDocumentオブジェクトを Index ページに渡しています。

AJAX フォーム (読みやすくするために一部省略しています):

@using (Ajax.BeginForm("Index_AddDocument", new AjaxOptions { UpdateTargetId = "MainList" }))

<div class="editor-field">
        @Html.EditorFor(model => model.NewDocument.Date)
        @Html.ValidationMessageFor(model => model.NewDocument.Date)
</div>

新しいドキュメントをデータベースに保存し、ドキュメントの部分ビュー リストを更新するメソッドは次のとおりです。

public ActionResult Index_AddDocument(HomeIndexViewModel viewModel)
    {

        db.Documents.Add(viewModel.NewDocument);
        db.SaveChanges();

        return PartialView("ListOfDocs", db.Documents);
    }

これは機能しません。 で例外が発生していdb.SaveChanges()ます。それは言います:

InnerException {"日時への変換中にオーバーフローが発生しました。"} System.Exception {System.Data.SqlServerCe.SqlCeException}

編集: My Document ドメイン モデルには、次の Date プロパティがあります。

[DataType(DataType.Date)]
public DateTime Date { get; set; }

AJAX フォームで、2005 年 5 月 2 日のようなランダムな日付を入力して [送信] をクリックすると、上記の例外が発生します。

4

2 に答える 2

1

私は自分の問題を解決したと思います。データベースの「日付」列のタイプは「日時」です。しかし、私のドメインモデルにはこれがありました:

[DataType(DataType.Date)]
public DateTime Date { get; set; }

その DataType を 'DataType.DateTime' に変更したところ、正常に動作しているようです。

皆様ご指導ありがとうございました!

于 2012-07-25T13:53:02.337 に答える
1

通話viewModel.NewDocument.Date前の値は何ですか?db.SaveChanges()

C# は、0000 年 1 月 1 日から 9999 年 12 月 31 日までの日付を処理できます。

SQL Server CE にも日付の範囲に制限があり、デフォルトの 1/1/0000 DateTime 値で動揺していると思われます。

于 2012-07-25T12:44:57.160 に答える