我不确定在哪种表单中您想从服务器端的表单获取数据。不过我建议你采用以下形式
postData: {
filter: function() {
var result = {}, i, item,
formInfo = $('form#myForm').serializeArray(),
l = formInfo.length;
for (i = 0; i < l; i++) {
item = formInfo[i];
result[item.name] = item.value;
}
return JSON.stringify(result);
}
}
使用postData
在下面的测试形式的情况下
<form id="myForm">
<div><input type="text" name="a" value="1 from a" id="a" /></div>
<div><input type="text" name="b" value="2 from b" id="b" /></div>
<div><input type="hidden" name="c" value="3 from c" id="c" /></div>
<div>
<textarea name="d" rows="8" cols="40">4</textarea>
</div>
<div><select name="e">
<option value="5" selected="selected">5</option>
<option value="6">6</option>
<option value="7">7</option>
</select></div>
<div>
<input type="checkbox" name="f" value="8" id="f" />
</div>
</form>
的result
变量将是
var result = {
a: "1 from a",
b: "2 from b",
c: "3 from c",
d: "4",
e: "5"
}
因此,没有转换数据将被完成。然后我建议使用JSON.stringify
将对象result
转换为JSON字符串。 (依赖于它可以不需要服务器代码。)所以filters
参数将被作为
{"a":"1 from a","b":"2 from b","c":"3 from c","d":"4","e":"5"}
您可以使用Fiddler或Firebug检查的相应的小demo HTTP流量。
你好奥列格!我尝试在POST数据中发送整个表单数据作为搜索参数,并尝试在MVC控制器中获得与强类型模型相同的结果。但我失败了。这里是我的帖子http://stackoverflow.com/questions/14522263/post-form-with-jqgrid-in-asp-net-mvc-3。如果你分享你的想法来实现这个目标,那将会很有帮助吗? – 2013-01-27 11:37:08
@Murali:我必须为我的客户做一些紧急的工作。稍后我会尝试阅读你的问题,我会尽力帮助你。你可以附加更多细节问题吗?例如'SearchViewModel'的定义和'id =“search-form”'形式的HTML片段。你是否对[Fiddler](http://www.fiddler2.com/Fiddler2/version.asp),[Firebug](http://getfirebug.com/)或IE或Chrome的开发者工具进行了分析,请求被发送到服务器?您也可以包含请求的详细信息和包含错误消息的响应。 – Oleg 2013-01-27 18:11:07
我用视图模型和表单以及其他所需信息更新了我的问题。我已经看到我的使用Firebug的发布请求参数,我可以通过使用Request [“PostData”]在控制器中将其作为JSON字符串进行检索,但是我如何才能通过检索操作方法参数viewModel和viewModel来获取它作为强类型。名称等? – 2013-01-28 05:10:38