0

次のスニペットを含む部分ビューがあります。

@model Mbrrace.Domain.MbrraceForm
<div class="row">
    <div class="span12 form-horizontal">
    @using (Ajax.BeginForm("DetailsSection11", "DataForm",
        new AjaxOptions
        {
            HttpMethod = "POST",
            OnComplete = "NextTab"
        }
        ))

この部分ビューを表示するビューを呼び出すコントローラーでは、モデル値の一部が事前設定されていますが、表示されていないか、他の方法で使用されていません。Ajax送信が発生すると、これらの値の一部がクリアされます(intはゼロに変更され、文字列はnullに変更されます)が、日付値は保持されます。フォーム自体に設定された値は正しく返されます。

@ Html.DisplayForを使用してフォームに到達したときに、プリセット値が正しいことを確認しました。

私はAjax.BeginFormとモデルをソリューションの他の場所で問題なく使用しています。送信の前後にModelStateが有効であることを確認しました。ModelState.Clear()も効果なしで試しました。

髪の毛の残りを引き裂く前に、問題が何であるかについてのアイデア。

4

1 に答える 1

0

フォーム内にこれらの値に対応する入力フィールドがない場合、フォームを POST したときにサーバーに送信されることはありません。そのため、デフォルトのモデル バインダーはリクエストからモデルをバインドすることができず、もちろんこれらのプロパティはすべてデフォルト値を持ちます。したがって、いくつかの可能性があります。

  • これらのプロパティをフォーム内の隠しフィールドとして含めます。
  • GET アクションでフェッチした場所 (データベースなど) から、POST コントローラ アクション内でそれらをフェッチします。
于 2012-10-01T12:35:25.350 に答える