Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用.ajax发布到MVC4控制器时,ViewModel始终为空_C#_Jquery_Ajax_Asp.net Mvc_Json - Fatal编程技术网

C# 使用.ajax发布到MVC4控制器时,ViewModel始终为空

C# 使用.ajax发布到MVC4控制器时,ViewModel始终为空,c#,jquery,ajax,asp.net-mvc,json,C#,Jquery,Ajax,Asp.net Mvc,Json,我的jQuery/HTML: 这是我的控制器 这就是JSON.stringifyparameters的外观: [{"ImageName":"https://domain.com/test.jpg","XPos":"347.98614501953125","YPos":"435.45140838623047","Height":"20","Width":"80.39999999999999"}] [HttpPost] public JsonResult Create(Imag

我的jQuery/HTML:

这是我的控制器

这就是JSON.stringifyparameters的外观:

[{"ImageName":"https://domain.com/test.jpg","XPos":"347.98614501953125","YPos":"435.45140838623047","Height":"20","Width":"80.39999999999999"}] 


    [HttpPost]
    public JsonResult Create(Image i) {
         //p always has null values
    }

为什么我的ViewModel总是包含空值

这是一个对象的Javascript数组。这与方法的签名不匹配

[
  {
    "ImageName":"https://domain.com/test.jpg",
    "XPos":"347.98614501953125",
    "YPos":"435.45140838623047",
    "Height":"20",
    "Width":"80.39999999999999"
  }
] 
我将开始使用框架的一些内置功能来完成繁重的工作

在你看来:

@Html.HiddenFor(m => m.ImageName);
在Jquery中:

$('form').submit(function () {

    var serializedForm = $(this).serialize();

    console.log(serializedForm );

    $.ajax({
        url: '@Url.Action("Create", "Home")',
        type: 'Post',
        data: serializedForm ,
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        success: function (result) {
            //yadda
        },
        error: function (xhr, status, error) {
          //yadda
        }
    });

这是一个对象的Javascript数组。这与方法的签名不匹配

[
  {
    "ImageName":"https://domain.com/test.jpg",
    "XPos":"347.98614501953125",
    "YPos":"435.45140838623047",
    "Height":"20",
    "Width":"80.39999999999999"
  }
] 
我将开始使用框架的一些内置功能来完成繁重的工作

在你看来:

@Html.HiddenFor(m => m.ImageName);
在Jquery中:

$('form').submit(function () {

    var serializedForm = $(this).serialize();

    console.log(serializedForm );

    $.ajax({
        url: '@Url.Action("Create", "Home")',
        type: 'Post',
        data: serializedForm ,
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        success: function (result) {
            //yadda
        },
        error: function (xhr, status, error) {
          //yadda
        }
    });

我认为您的错误在于您使用的是数组。像这样试试

var parameters = {
    ImageName: $('#imagename').val(),
    XPos: $('#xpos').val(),
    YPos: $('#ypos').val(),
    Height: $('#height').val(),
    Width: $('#width').val()
};
或将输入参数更改为

public JsonResult Create(IEnumerable<Image> i)

我认为您的错误在于您使用的是数组。像这样试试

var parameters = {
    ImageName: $('#imagename').val(),
    XPos: $('#xpos').val(),
    YPos: $('#ypos').val(),
    Height: $('#height').val(),
    Width: $('#width').val()
};
或将输入参数更改为

public JsonResult Create(IEnumerable<Image> i)

jquery是区分大小写的,您的字段都有大写的id,但是jquery选择器都是小写的。为什么您不使用razor helpers作为输入字段?您不使用razor helpers发送数据的任何原因。关于区分大小写,请注意参数包含值,这是输入问题时的一个输入错误。此外,您正在按照JSON发送IEnumerable/Array[]。jquery区分大小写,您的字段都有大写的id,但jquery选择器都是小写的。为什么您不使用razor helpers作为输入字段?您不使用razor helpers发送数据的任何原因。关于区分大小写,请注意参数中包含值,这是输入问题时的一个输入错误。此外,您正在根据JSON发送IEnumerable/Array[]。当我这样做时,我得到以下错误:无效的JSON原语:ImageName。我确实发现错误是我发送了一个集合/数组,不仅仅是一个对象是问题所在。当我这样做时,我得到了以下错误:无效的JSON原语:ImageName。我确实发现错误是我发送了一个集合/数组,而不仅仅是一个对象是问题所在。