Yuc*_*cel 7 json model-binding asp.net-mvc-3
我正在使用MVC3,我知道MVC3支持将JSON文字绑定到Action参数.但我不能成功;
我有一个班级名称Tag
public class Tag
{
public int tagId { get; set; }
public string tagName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
控制器上的Action,名为Tag
[HttpPost]
public ActionResult Tag(Tag tag)
{
// Here will be codes...
return Json(new { success = 0 });
}
Run Code Online (Sandbox Code Playgroud)
将js对象作为JSON发送到我的操作的Javascript代码
var tag ={tagId:5,tagName:"hello"};
$.ajax({
url: "/image/tag",
type: "POST",
data: $.toJSON(tag),
success: function (r) {
if (r.success == 1) {
window.location = r.redirect;
}
}
Run Code Online (Sandbox Code Playgroud)
发布我在Firebug Net选项卡中看到的数据
{"tagId":5,"tagName":"hello"}
Run Code Online (Sandbox Code Playgroud)
Tag Action中的参数名称标记不为null,但tagId的值为O,tagName的值为null.这里有什么问题?
Dar*_*rov 18
您需要将请求的内容类型设置为application/json:
$.ajax({
url: '/image/tag',
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: $.toJSON(tag),
success: function (r) {
if (r.success == 1) {
window.location.href = r.redirect;
}
}
});
Run Code Online (Sandbox Code Playgroud)
啊,你不需要让你的Tag模型属性以小写字母开头:
public class Tag
{
public int TagId { get; set; }
public string TagName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
备注1:JavaScriptSerializerASP.NET MVC 3在幕后使用的类能够正确处理它.
备注2:在您的Tag操作中,您似乎返回了以下JSON:{"success":0}在您成功的AJAX回调中,您似乎使用了一些r.redirect不存在的属性.
备注3:避免以与视图模型相同的方式命名控制器操作.通常动作名称应该表示动词(如List,Save,Delete,...),而视图模型代表的资源(TagModel......).
| 归档时间: |
|
| 查看次数: |
6347 次 |
| 最近记录: |