jquery – 将对象从JSON传递到MVC控制器 – 它始终为null?

前端之家收集整理的这篇文章主要介绍了jquery – 将对象从JSON传递到MVC控制器 – 它始终为null?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在这里看到一些有关类似问题的问题,我已经阅读了,跟着他们,但是我仍然有同样的问题.

我基本上是在javascript中创建一个对象,并尝试调用一个控制器上返回一个html字符串的方法.不是JSON.

我一直在使用dataType和contentType,但仍然没有喜悦.所以如果代码片段有点混乱,那么道歉.

在JS中构建对象.

function GetCardModel() {
    var card = {};
    card.CardTitle = $("#CardTitle").val();
    card.TopicTitle = $("#TopicTitle").val();
    card.TopicBody = $("#TopicBody").data("tEditor").value();
    card.CardClose = $("#CardClose").val();
    card.CardFromName = $("#CardFromName").val();
    return card;
}

看看对象 – 所有的东西看起来都很好,就像在JSON中一样.

var model = GetCardModel();
alert(JSON.stringify(GetCardModel()));

打电话…

$.ajax({
            type: "POST",url: "/Postcard/Create/Preview/",dataType: "json",//contentType: "application/json",data: GetCardModel(),processData: true,success: function (data) {
                alert("im back");
                alert(data);
            },error: function (xhr,ajaxOptions,error) {
                alert(xhr.status);
                alert("Error: " + xhr.responseText);
                //alert(error);
            }
        });

总是当我进入控制器时,对象总是在那里,但是对于所有的属性都是空值.

解决方法

参数名称应为数据,而不是日期:
$.ajax({
    type: 'POST',url: '/Postcard/Create/Preview/',dataType: 'json',data: {
        CardTitle: $("#CardTitle").val(),TopicTitle: $("#TopicTitle").val(),TopicBody: $("#TopicBody").data("tEditor").value(),CardClose: $("#CardClose").val(),CardFromName: $("#CardFromName").val()
    },success: function (data) {
        alert('im back');
        alert(data);
    },error) {
        alert(xhr.status);
        alert('Error: ' + xhr.responseText);
    }
});

这将成功调用以下控制器动作,动作参数将被正确绑定:

[HttpPost]
public ActionResult Preview(Card card) { ... }

具有以下模型:

public class Card
{
    public string CardTitle { get; set; }
    public string TopicTitle { get; set; }
    public string TopicBody { get; set; }
    public string CardClose { get; set; }
    public string CardFromName { get; set; }
}

猜你在找的jQuery相关文章