1

私は機知に富んでいて、どこを見るべきかいくつかの指針が必要です。

次のような MVC Ajax フォームがあります。

<div id="totalPartial">
    <table>
        @foreach (Application application in Model.Applications)
        {
            <tr>
                <td>
                    @Html.DisplayFor(m => application.Candidate.Client.ClientName)
                </td>
                <td>
                    @Html.DisplayFor(m => application.Candidate.FirstName)
                </td>
                <td>
                    @Html.DisplayFor(m => application.Test.TestName)
                </td>
                <td>
                    @{ Model.SelectedSession = application.Session; }
                    @using (Ajax.BeginForm("Plan", "Keuring",
                                           new AjaxOptions
                                               {
                                                   InsertionMode = InsertionMode.Replace,
                                                   UpdateTargetId = "totalPartial",
                                                   HttpMethod = "POST"
                                               },
                                           new {id = "form" + application.Id, name = "form" + application.Id}))
                    {
                        @Html.HiddenFor(m => application.Id)
                        @Html.DropDownListFor(m => application.Session.Id, Model.SessionsInclNotPlanned, new {@class = "sessiondropdown", onchange = "$(this.form).submit()"})
                    }
                </td>
            </tr>
        }        
    </table>
</div>

繰り返しでテーブル行が追加されるたびに、ドロップダウンリストが生成され、関連するセッションが選択されます。チャームとして機能します-最初にロードされたとき。

ユーザーが別のセッションを選択すると、現在のテーブルを置き換えるための ajax 呼び出しが行われます (したがって、totalPartial が更新されます)。キャッチで動作します。このポストバックでは、すべてのドロップダウン ボックスで選択された値は、選択された値と同じです (独自の値を保持する必要があります)。選択された値は、メソッドでアクティブに設定されます。

@{ Model.SelectedSession = application.Session; }
   Model.SessionsInclNotPlanned

完全にリロードすると、チャームとして再び機能します。この Ajax ポストバックだけで、最初の選択がすべてのリスト ボックスに反映されます...

どこを見る?fiddler を確認したところ、Ajax リクエストからの戻り値がブラウザーで (誤って) 表示されるため、サーバー側でエラーが発生します。それでも - リストボックスの入力をデバッグすると、正しく読み取られます。

4

0 に答える 0