1

当通过 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) 我做错了什么

有任何想法吗?谢谢。

4

1 回答 1

6

您需要公共属性来绑定一个类。

代替

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; }
}

没有绑定字段。

于 2009-05-30T09:23:50.053 回答