在通过GET而不是POST调用时,让MVC填充我的自定义模型参数似乎有问题。
我有一个JavaScript片段,它调用一个动作,如下所示:
$.getJSON('<%= Url.Action("DoSearch") %>' + location.search,
function(data) {
if (data.Result == "OK") {
location.href = location.href;
}
});
它所做的基本上是调用一个单独的操作,向它传递与调用页面相同的查询字符串。如果结果是"OK",则刷新当前页面。
该操作的定义如下:
public ActionResult DoSearch(SearchParameters searchParameters)
模型是:
public class SearchParameters
{
public string Query;
...
}
调用URL (通过firebug验证)类似于/DoSearch?Query=some+query
。(我也尝试了/DoSearch?searchParameters.Query=some+query
,但没有成功)
无论我尝试什么,我的参数总是显示为空(不是null,只是所有参数都被初始化为默认值)
如果我像这样定义动作:
public ActionResult DoSearch(string Query, ...)
然后我的参数就会被正确地填充。然而,模型不是这样的。
我假设:
a)填充对象模型对GET请求无效。
b)我做错了什么
有什么想法吗?谢谢。
发布于 2009-05-30 01:23:50
你需要公共属性来绑定一个类。
替换
public string Query;
使用
public string Query{get;set;}
至少这是我不得不做的,让它在我的项目中工作。我不知道你是否还有其他问题。哦,我也用过GET,所以它应该可以工作。
这是我的参数类:
public class Parameters
{
public int? page { get; set; }
public int? pageSize { get; set; }
public string[] columnsToDisplay { get; set; }
public string columnToSort { get; set; }
public bool? descending { get; set; }
}
未绑定字段。
https://stackoverflow.com/questions/929409
复制