1
4

3 回答 3

3

您可以做的是提出HTTP POST请求而不是HTTP GET.

$('#postLink').click(function() {
    var MyPerson = {
        ID: 1234,
        FirstName: 'abc',
        LastName: 'def'
    };

    $.ajax({
        data: MyPerson,
        url: $(this).attr('href'),
        type: 'POST',
        dataType: 'json' /* this really is optional */,
        success: function (response) {
            return true;
        },
        error: function ( error ) {
            return false;
        }
    )};

    return false; /* required to stop event propagation */
});

现在你可以像这样定义一个 HTML<a>元素:

<a href="/test/Index" id="postLink">Ajax post the person to the server.</a>

您的控制器现在应该能够解析该Person对象。

编辑List<Person>:如果您没有在每个请求中传递它,您可能想要删除它。它将帮助 ASP.NET 将复杂类型(Person在本例中)识别为请求的数据类型。通常最好为您的每个视图创建 ViewModel,这样您的视图就有一个强类型的数据上下文。

class PersonViewModel
{
    public int ID { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}
于 2012-08-04T23:31:03.083 回答
0
于 2012-08-04T23:20:21.853 回答
0

查询字符串接受参数而不是您拥有的对象类型,因此您必须将其作为带分隔符的查询字符串传递 &

例子 :

var html = "<a href='/test/Index/person?PersonId=123456789&FirtsName=Test......
于 2012-08-04T23:23:38.850 回答