and*_*ecu 1 ajax asp.net-mvc jquery modelbinder
当通过GET而不是POST调用时,我似乎遇到了让MVC填写我的自定义模型参数的问题.
我有一个JavaScript代码段,可以调用这样的动作:
$.getJSON('<%= Url.Action("DoSearch") %>' + location.search,
function(data) {
if (data.Result == "OK") {
location.href = location.href;
}
});
Run Code Online (Sandbox Code Playgroud)
它的作用基本上是调用一个单独的动作,传递与调用页面相同的查询字符串.然后,如果结果为"OK",则刷新当前页面.
该操作的定义如下:
public ActionResult DoSearch(SearchParameters searchParameters)
Run Code Online (Sandbox Code Playgroud)
该模型是:
public class SearchParameters
{
public string Query;
...
}
Run Code Online (Sandbox Code Playgroud)
调用URL(用firebug验证)就像/DoSearch?Query=some+query.(也尝试/DoSearch?searchParameters.Query=some+query没有成功)
无论我尝试什么,我的参数总是显示为空(不为空,只是所有参数都被初始化为默认值)
如果我定义这样的动作:
public ActionResult DoSearch(string Query, ...)
Run Code Online (Sandbox Code Playgroud)
然后我的参数被正确填充.然而,不是模型.
我假设:
a)填充对象模型对GET请求不起作用.
b)我做错了什么
有任何想法吗?谢谢.
您需要在类上绑定公共属性.
更换
public string Query;
Run Code Online (Sandbox Code Playgroud)
同
public string Query{get;set;}
Run Code Online (Sandbox Code Playgroud)
至少这是我必须要做的才能让它在我的项目中工作..我不知道你是否还有其他问题.哦,我也使用GET,所以它应该工作.
这是我的Parameters类:
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; }
}
Run Code Online (Sandbox Code Playgroud)
没有绑定字段.
| 归档时间: |
|
| 查看次数: |
1051 次 |
| 最近记录: |