ary*_*axt 12 c# asp.net asp.net-mvc
我的iphone客户端将以下json发布到我的mvc服务.从html表单发布数据时,它会自动将表单数据转换为UserModel并将对象传递给我的Create方法,但是当我从iphone发送请求正文中的JSON字符串时,它返回null.
从JSON到Object的转换最干净的解决方案是什么.
我宁愿不为不同的客户端创建多个方法,所以我试图在iphone和mvc客户端上使用相同的方法.
我的要求的身体:
{
"firstName" : "Some Name",
"lastName" : "Some Last Name",
"age" : "age"
}
Run Code Online (Sandbox Code Playgroud)
我的模型和行动结果
public class UserModel
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
[HttpPost]
public Create ActionResult(UserModel user)
{
// user is null
userStorage.create(user);
return SuccessResultForModel(user);
}
Run Code Online (Sandbox Code Playgroud)
Gle*_*rie 20
您需要将HTTP Header(接受)设置为'application/json',以便MVC知道您传递JSON并完成解释它的工作.
accept: application/json
Run Code Online (Sandbox Code Playgroud)
在这里查看更多信息:http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
更新:使用MVC3和jQuery工作示例代码
控制器代码
namespace MvcApplication1.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
[HttpPost]
public JsonResult PostUser(UserModel data)
{
// test here!
Debug.Assert(data != null);
return Json(data);
}
}
public class UserModel
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
查看代码
@{ ViewBag.Title = "Index"; }
<script src="../../Scripts/jquery-1.9.1.min.js"></script>
<script type="text/javascript">
var sample = {};
sample.postData = function () {
$.ajax({
type: "POST", url: "@Url.Action("PostUser")",
success: function (data) { alert('data: ' + data); },
data: { "firstName": "Some Name", "lastName": "Some Last Name", "age": "30" },
accept: 'application/json'
});
};
$(document).ready(function () {
sample.postData();
});
</script>
<h2>Index</h2>
Run Code Online (Sandbox Code Playgroud)
尝试将方法更改为此以查看是否获得FirstName或LastName
public Create ActionResult(string FirstName, string LastName)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
39494 次 |
最近记录: |