Ajax post を使用して Viewmodel をコントローラーに送り返そうとするコードが少しあります。ある方法でコードを記述した場合、コードは正しく通過し、別の方法ではビューモデル内で null または 0 の値を返します。
仕組み:
$(document).ready(function () {
$(".boxItem").change(function (event) {
var url = "/Search/GetBoxChangeInfo";
$.post(url, @Html.Raw(Json.Encode(Model)), function (data) {
$("#column-1").html(data);
});
});
});
そして、null 値を返す方法:
$(document).ready(function () {
$(".boxItem").change(function (event) {
var url = "/Search/GetBoxChangeInfo";
$.post(url, { json: @Html.Raw(Json.Encode(Model)) }, function (data) {
$("#column-1").html(data);
});
});
});
選択した値と ID に関するパラメーターを返す必要があるため、2 番目の方法で使用する必要があるため、次のようになります。
$(document).ready(function () {
$(".boxItem").change(function (event) {
var str = $(this).attr('id');
var num = $(this).val();
var url = "/Search/GetBoxChangeInfo";
$.post(url, { json: @Html.Raw(Json.Encode(Model)), id : str, selected : num }, function (data) {
$("#column-1").html(data);
});
});
});
私のコントローラーはこのように見えます:
[HttpPost]
public ActionResult GetBoxChangeInfo(EventViewModel json)
{
//stuff
}
編集 - 要求に応じて、ここに EventViewModel 構造があります
[JsonObject(MemberSerialization.OptIn)]
public class EventViewModel
{
public int EventNumber { get; set; }
public List<EventItemsViewModel> EventItems { get; set; }
public List<LocationViewModel> Locations { get; set; }
public int StartLocationID { get; set; }
public bool Outbound { get; set; }
public List<int> SelectedEvents { get; set; }
public List<DurationsViewModel> Durations { get; set; }
}
なぜこれが起こっているのか誰にも分かりますか?この方法でコントローラーに送信できるホームに制限はありますか?これは非常に複雑なビューモデルであるため、それと関係があるのではないかと考えました。
ありがとう