【发布时间】:2014-06-03 15:30:40
【问题描述】:
我的应用程序中定义了一个对象,如下所示:
public class Request
{
string LookupName { get; set; }
PageData PageData { get; set; }
}
public class PageData
{
int Page { get; set; }
int PageSize { get; set; }
}
action 方法如下所示:
[HttpPost]
public ActionMethod DoLookup(Request req)
{
...
...
return new ContentResult(...);
}
我正在尝试使用 JQuery + Javascript 将信息发布到操作中,除了嵌套属性之外,一切都运行良好:
// javascript...
var reqData = {};
reqData.LookupName = "abc";
reqData.PageData= { Page:1, PageSize:10 };
$.post("/Controller/DoLookup", reqData, function(data) {
...
});
这很好用,除了“PageData”中的嵌套属性外,所有内容都可以正常发布到控制器。 Request 中的 PageData 实例似乎只是一个默认实例,因为 Page 和 PageSize 属性都是 0。如果我在 javascript 中省略了“PageData”,那么它在控制器上将为 null。
这似乎有点奇怪,因为显然 MVC 识别出 PageData 的一些信息,但似乎没有实际分配属性。是不是我做错了什么,或者有什么方法可以找到/使用自定义模型绑定器来使其正常工作?
注意:
请注意这里没有提到 JSON。我知道我可以转换大量代码 + 使用 JSON 等。这是我目前不想解决的路径,除非这是唯一可能的选择。
【问题讨论】:
-
你有什么理由使用 JS 提交表单而不是提交按钮?
-
在javascript中,你设置
req.PageRequest,但是c#中的属性名称是PageData。 -
@JasonP 哎呀,这是一个错字。我修好了。
-
这个question可以帮助你
-
不确定该语法是否正确,我认为应该是
reqData.PageData= { "Page":1, "PageSize":10 };- 注意双引号
标签: c# javascript jquery asp.net-mvc-4