ASP.NET MVC ModelBinder 无法处理 GET 请求和/或 jQuery AJAX?
当通过 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
但没有成功)
无论我尝试什么,我的参数总是显示为空(不为空,只是所有参数都被初始化为它们的值)默认值)
如果我像这样定义操作:
public ActionResult DoSearch(string Query, ...)
那么我的参数将被正确填充。 然而,模型却没有。
我假设:
a) 填充对象模型对于 GET 请求不起作用。
b) 我做错了什么
有什么想法吗? 谢谢。
I seem to have a problem with getting MVC to fill in my custom model parameter when called through GET instead of POST.
I have a JavaScript snippet that calls into an action like so:
$.getJSON('<%= Url.Action("DoSearch") %>' + location.search,
function(data) {
if (data.Result == "OK") {
location.href = location.href;
}
});
What it does, is basically call a separate action, passing it the same querystrings as the calling page. Then if the result is "OK", it refreshes the current page.
The action is defined like the following:
public ActionResult DoSearch(SearchParameters searchParameters)
The model is:
public class SearchParameters
{
public string Query;
...
}
Calling URL (verified with firebug) is like /DoSearch?Query=some+query
. (also tried /DoSearch?searchParameters.Query=some+query
with no success)
No matter what I tried, my parameter always comes up as empty (not null, just all of the parameters being initialized to their default values)
If I define the action like this instead:
public ActionResult DoSearch(string Query, ...)
Then my parameters get filled correctly. Not with the model however.
I assume:
a) either populating the object model doesn't work for GET requests.
b) I'm doing something wrong
Any ideas? Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要公共属性来绑定到类上。
替换
为
至少这就是我必须做的才能让它在我的项目中工作。我不知道您是否还有其他问题。
哦,我也使用了 GET,所以它应该可以工作。
这是我的参数类:
未与字段绑定。
You need public properties to bind on a class.
replace
with
At least that's what I had to do to get it to work in my project.. I don't know if you have another problem as well.
Oh and I used GET as well so it should work.
This is my Parameters class:
Didn't bind with fields.