将json字符串传递给标记有POST属性的MVC4操作方法(AttributeRouting)

时间:2013-01-06 13:42:45

标签: asp.net-mvc json post fiddler attributerouting

我正在使用AttributeRouting库来简化生根。我有一个标有POST属性的方法,并获得一个字符串参数,如下所示。

[POST("Create")]
public ActionResult Create(string data)
{
    JavaScriptResult result = new JavaScriptResult();

    User user = JsonConvert.DeserializeObject<User>(data);
    BLResult bLResult = AccountingBL.CreateAccount(user);
    result.Script = JsonConvert.SerializeObject(bLResult);

    return result;
}

我使用Fiddler模​​拟具有以下标题和请求正文的帖子请求。

接头

User-Agent: Fiddler
Host: localhost:2253
Content-Type: application/json
Content-Length: 67

请求正文:

{"Email":"foo@foo.com","Password":"123456","Name":"Halil İbrahim"}

当我跟踪请求时,我看到data为空。哪里我错过了重点?

1 个答案:

答案 0 :(得分:1)

您应该使用ASP.NET MVC的ModelBinding功能直接获取User实例

将您的行动重组为

[POST("Create")]
public ActionResult Create(User user)
{
    BLResult bLResult = AccountingBL.CreateAccount(user);

    result.Script = JsonConvert.SerializeObject(bLResult);

    return result;
}

其中User的形式。确保User具有无参数构造函数

public class User {

    public string Name {get;set;}

    public string Password {get;set;}

    public string Email {get;set;}

}

并将数据作为

发送到POST
var user = {"Email":"foo@foo.com","Password":"123456","Name":"Halil İbrahim"}

 $.ajax({
   .... other details
   data : user
 }