通过ajax发布到控制器的模型为空

梅迪

我正尝试通过Ajax仅向控制器发送2个ID,如下所示,但是该模型完全为空。

我的视图模型非常简单,如下所示:

public class CityAreaBindingModel
{
    public int CityID { get; set; }
    public int AreaID { get; set; }
}

查看:两个下拉列表,可帮助选择城市和地区

        <select class="form-control" id="CityID" name="CityID">
            @{
                foreach (var city in ViewData["Cities"] as List<SamsungTools.Models.City>)
                {
                    <option value="@city.ID" @(city.ID == 1 ? "selected" : "")>@city.Title</option>
                }
            }
        </select>
        <select class="form-control" id="AreaID" name="AreaID">
            @{
                foreach (var area in ViewData["Areas"] as List<SamsungTools.Models.Area>)
                {
                    <option value="@area.ID" @(area.ID == 1 ? "selected" : "")>@area.Title</option>
                }
            }
        </select>

Ajax:将formData与视图中的两个选定ID结合使用

var cId = $('#CityID').val();
var aId = $('#AreaID').val();
var data = new FormData();
data.append("CityID", cId);
data.append("AreaID", aId);

$.ajax({
    headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json'
    },
    type: 'POST',
    url: '/api/GetData/GetSaleCentersByLocation',
    data: data,
    processData: false,

在控制器中,只是从ajax获取视图模型:

[HttpPost]
public JsonResult GetSaleCentersByLocation(CityAreaBindingModel model)
{
    GeneralStore gs = new GeneralStore();
    var saleCentersByCity = gs.GetSaleCentersByCity(model.CityID);
    var result = new JsonResult();
    result.Data = saleCentersByCity;
    result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;

    return result;
}

问题在于控制器中的模型完全为空。我在Ajax中更改了标头的字段,但是以任何其他方式都会得到错误415,非法调用,服务器错误500,...使用上述Ajax选项,数据将发送到控制器,但模型为null。

有什么办法吗?

哈默德·莫加达西

我认为问题出在js代码中的数据结构上,请尝试以下代码:

var cId = $('#CityID').val();
var aId = $('#AreaID').val();

var jsonObject = {"CityID": cId , "AreaID": aId };
var data = JSON.stringify(jsonObject);

$.ajax({
    'Content-Type': 'application/json'
    type: 'POST',
    url: '/api/GetData/GetSaleCentersByLocation',
    contentType: "application/json",
    data: data
    success: function (result) {
     console.log(result);
    }
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将数据发布到控制器 Asp.Net Core MVC 时模型为空

将模型发布到控制器后,ViewModel内容为空

发布后模型在控制器中被接收为空

发布到控制器时,图像值为空

AJAX发布数据在控制器MVC中为空

从局部视图到控制器的ajax发布为null

Ajax 发送数据到控制器时为空

Ajax 发布到控制器 404

将数组从ajax调用传递到控制器,控制器中的数组为空

MVC 5模型中的“提交表单”在控制器发布方法中为空

MVC 4模型中的“提交表单”在控制器发布方法中为空

在发布到控制器的表单上,模型始终为NULL

ASP.NET 5 / MVC 6 Ajax将模型发布到控制器

将文件发布到控制器-IFormFiles始终为空

发布到MVC6控制器的值为空

jQuery AJAX发布数据在C#Web API控制器中为空

AJAX发布数据到达ASP.NET Core 2.1.1控制器时为空

如何通过JQuery ajax调用将dataTable的选定行的数据发布到php控制器

无法通过AJAX将数据发布到Grails中的控制器的Action中

MVC将子模型发布到控制器

Ajax发布到ASP.net MVC控制器-对象属性为null

MVC .net Core2 - 控制器中的模型为空(使用 Jquery ajax 时)

html.beginForm通过ASP> NET-MVC5中的jQuery Ajax函数将List <强类型输入>的空值发布到控制器

通过MVC中的Ajax将模型从局部视图传递到控制器

ASP.NET Core模型未通过AJAX绑定到控制器

发布到控制器时,部分viewmodel为null

使用jquery ajax发布到CakePHP控制器

ajax不会将文件发布到控制器mvc

将ajax数据发布到spring控制器