我正在使用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
为空。哪里我错过了重点?
答案 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;}
}
并将数据作为
发送到POSTvar user = {"Email":"foo@foo.com","Password":"123456","Name":"Halil İbrahim"}
$.ajax({
.... other details
data : user
}