Schedule
モデルに対応するいくつかのフィールドをユーザーが入力できる表形式があります。また、Schedule
のプルダウンからUser
を選択することもできます。すべての必要なデータをビューに送信するには、ViewModel
には、Schedule
と、システム内のすべてのユーザーを含むIEnumerable<SelectListItem>
が含まれています。Ajax経由でフォームにViewModelを渡す
私のコントローラでは、List
をSchedulingViewModels
と作成します。その後、私はAjaxを介して、私のビューにPartialViewをロード
@model List<JNEScheduling.Models.SchedulingViewModel>
...
<tbody>
@for (int i = 0; i < Model.Count; i++)
{
<tr>
<td>
@Html.HiddenFor(m => m[i].ID)
@Html.DropDownListFor(m => m[i].schedule.UserID, Model[i].users)
</td>
<td>
@Html.TextBoxFor(m => m[i].schedule.hours)
</td>
<td>
@Html.TextBoxFor(m => m[i].schedule.week_ending)
</td>
</tr>
}
<tr>
</tbody>
:私は、PartialView(私は唯一の関連する部分を含めました)にList<SchedulingViewModel>
を渡します。ローディングは正常に動作します。ただし、フォームがPOST
edの場合は、空のSchedule
オブジェクトのリストをControllerに渡しますが、予期したとおりに、埋め込まれたSchedulingViewModel
オブジェクトのリストは渡されません。
フォーム上のすべての入力のDOM名と関係があると思います。 [index].schedule.hours
などの形をとります。スケジューリングビューモデルオブジェクトのリストを返すにはどうすればよいですか?またはList
がSchedule
のオブジェクトであっても問題ありません。 POST
ため
のjQuery:
$('#submitButton').click(function() {
var content = $("form").serialize();
$.ajax({
type: 'POST',
url: '@Url.Action("Table", "Schedule")',
data: content,
success: function (data) {
$('#hoursTable').html(data);
}
});
更新:PartialView
からアヤックスGET
によって生成されたテーブルの 1行、ブライアンのSchedulingContainerViewModel
を使用した後。
<tr>
<td>
<input name="Items[0].ID" type="hidden" value="0" />
<select name="Items[0].schedule.UserID">
<option selected="selected" value="1">User 1</option>
<option value="2">User 2</option>
<option value="3">User 3</option>
<option value="4">User 4</option>
<option value="5">User 5</option>
</select>
</td>
<td>
<input name="Items[0].schedule.hours" type="text" value="40.00" />
</td>
<td>
<input name="Items[0].schedule.week_ending" type="text" value="5/26/2017 12:00:00 AM" />
</td>
</tr>
私はOP –
を更新しました申し訳ありませんが、簡潔さのために1つの「tbody tr」しか含まれていませんでした。全体が 'form'タグで囲まれた有効なテーブルにあります。 –
@BrianMainsは奇妙なDOM名を解決しましたが、コントローラへの呼び出しは一切ありません。 –