我有一些代码尝试使用 Ajax 帖子将 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);
});
});
});
以及返回空值的方式:
$(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 的参数传回,所以它看起来像:
$(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; }
}
有谁知道为什么会发生这种情况?以这种方式可以将很多东西发送到控制器是否有限制 - 这是一个非常复杂的视图模型,所以想知道这是否与它有关。
谢谢