null保持从视图传递到控制器

时间:2016-09-20 21:34:09

标签: c# asp.net-mvc

我已经尝试了我在stackoverlfow上已经找到的所有解决方案,并按照此处的说明重新开始https://stick2basic.wordpress.com/2013/04/14/how-to-pass-model-from-view-to-controller-using-jquery/

每次触发我的ajax调用时,它都会将null传递给控制器​​

*修正了拼写错误,问题仍然存在

模型

public class DateModel
    {
        public DateTime date { get; set; }
    }

的JavaScript

$(document).ready(function () {
    $("#jqxdatetimeinput").jqxDateTimeInput({ width: '250px', height: '25px' });
    $("#jqxbutton").jqxButton({ width: '150', height: '25' });

    $("#jqxbutton").on('click', function () {

        var dateSelected = $('#jqxdatetimeinput').jqxDateTimeInput('getDate');
        alert(dateSelected);

        var DateModel =
            {
                "date": dateSelected
            };

        $.ajax({
            url: 'home/submitDate/',
            data: JSON.stringify(DateModel),
            type: 'POST',
            contentType: 'application/json; charset=utf-8',
            success: function (data) {
                alert(data);
            }
        });
    });
});

控制器

public class HomeController : Controller
    {
        public IActionResult Index()
        {
            DateModel selectionDate = new DateModel();
            return View();
        }

        public JsonResult submitDate(DateModel selectionDate)
        {
            return Json(selectionDate.date);
        }
    }

3 个答案:

答案 0 :(得分:0)

您无需使用JSON.stringify。由于它是一个简单的对象,您可以按原样传递它。模型绑定将起作用。

$.ajax({
            url: 'home/submitDate/',
            data: DateModel,
            type: 'POST',                
            success: function (data) {
                alert(data);
            }
        });

或者如果要发送js对象的Json strinfified版本,则需要通过指定contentType属性值告诉服务器您要发送的数据类型。你错了!修复contentType中的拼写错误!值

$.ajax({
    url: '@Url.Action("submitDate")',
    data: JSON.stringify(DateModel),
    type: 'POST',
    contentType: 'application/json; charset=utf-8',
    success: function (data) {
        alert(data);
    }
});

答案 1 :(得分:0)

这是你的contentType参数的拼写错误吗?

contentType: 'aplication/json; charset=utf-8',

也许应该是

contentType: 'application/json; charset=utf-8',

答案 2 :(得分:0)

问题是日期格式。我能够使用IE Debugging并看到JQ Widgets以DateTime无法处理的意外方式传递日期。