0

我的阿贾克斯:

$.ajax({
                            url: '/Extensions/Sample',
                            type: 'GET',
                            async: false,
                            dataType: 'text',
                            processData: false,
                            //contentType: 'application/json; charset=utf-8',
                            data: "extension=" + JSON.stringify(newextension),
                            success: function (data) {
                                alert("Success");
                            }
                        }).error(function (jqXHR, textStatus, errorThrown) {
                            alert(jqXHR.status);
                            alert(jqXHR.responseText);
                            alert(errorThrown);
                        });

我的控制器:

 public ActionResult Sample(Extension extension)
    {           
        return PartialView(extension);
    }

我的模型:

 public class Extension
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Number { get; set; }
}

我的杰森:

 newextension = [{
                        'Name': 'User1',
                        'Number': '101'
                    },
                    {
                        'Name': 'User2',
                        'Number': '102'
                    },
                    {
                        'Name': 'User3',
                        'Number': '103'
                    }];

错误是对象引用未设置为对象的实例。错误在哪里,我该如何解决这个问题。任何帮助..

4

2 回答 2

0

如果您放置堆栈跟踪,将会很有帮助。我在这里看到的一个问题是 Sample 的参数是 Extension 类型的对象,而 json 具有这些对象的数组。我的猜测是,在这种情况下扩展参数将为 null,这会导致 NullReferenceException。

一种可能的方法是让签名看起来像这样:

public ActionResult Sample(Extension[] extension)
    {           
        return PartialView(extension);
    }

但是我不确定当 PartialView 接收到一个数组时会发生什么。

于 2013-10-10T10:44:01.620 回答
0

在您的模型中,删除Id类中的属性Extension或在 JSON 中添加属性Id,因为返回的 JSON 和参数不匹配,因此您的对象没有被初始化。

更新:您发送的 JSON 是一个列表,所以我想您需要List<Extension> extension用作参数

于 2013-10-10T10:29:51.633 回答