2

以下代码使用 ajax 成功发布,尽管我不确定 MVC 中的服务器端 ActionResult 如何理解正在发送的对象。有任何想法吗?需要从 jquery 发布的对象是具有多个属性的对象。谢谢

           var url = 'abc';
           //val: { several properties, forename, surname, postcode

           jr.ajax.loadJson(url, val,
               true,
               function(xhr, textStatus, errorThrown) {
               }, 
               true, 'post', val);
           });


// controller

public ActionResult Show()
{
        var list = Request.Form[0];  // can see the values in here
}


// I want the posted value to be this object

public class Test
{
    public string forename { get; set; }        
    public string surname { get; set; }        
    public string postcode { get; set; }
}
4

2 回答 2

3

您需要将对象发布到需要具有类似属性的对象参数的操作。我不太确定是什么loadJSON(我假设它是您正在使用的插件?),但是,在发布数据时,您可以使用标准$.ajax方法,或者$.post使用更简单的 API,例如

服务器端

public class MyModel
{
    public string Property1 { get; set; }
    public string Property2 { get; set; }
    ...
}

[AjaxOnly]
public ActionResult Show(MyModel model)
{
    // use model
}

客户端

var obj = { Property1: 'value1', Property2: 'value2' };
$.post(url, obj, function(response) {
    alert('post successful!');  
});

当您的数据到达服务器时,MVC 尝试使用名称/值对方法将客户端对象绑定到预期的服务器端类型。换句话说,只要您从客户端传递的对象具有名称完全相同的属性和该特定属性类型的有效值,它就会成功映射。

于 2013-06-20T12:03:55.257 回答
0

发布 json 对象时,您只需将类型添加为方法参数,Object Binder 就会将其转换

public ActionResult Show(Test test)
    {
         [...]
    }
于 2013-06-20T11:59:40.410 回答