我有一个表单和一个提交按钮单击,我序列化我的表单并将其发送到MVC操作。
Jquery代码
var formCollection = $('form').serialize();
var path = $(this).attr('data-content-url');
// check if no more error
$.ajax({
type: 'POST',
url: path,
cache: false,
data: { collection: formCollection },
datatype: 'json',
success: function (data) {
// do stuff
}
});
MVC方
[HttpPost]
public ActionResult MethodName( FormCollection collection )
{
}
我确实将我的集合变量中的数据序列化为
name=test&id=1 as collection[0]
如何打破此集合[0],以便可以将此name
和id
直接分配给类参数,例如
Person p = new person { collection["name"], collection["id"] }
非常感谢
答案 0 :(得分:1)
这个工作,创建一个新的帮助器类,它可以像往常期望的那样在formcollection中转换序列化数据
private FormCollection DeSerialize(FormCollection form)
{
FormCollection collection = new FormCollection();
//un-encode, and add spaces back in
string querystring = Uri.UnescapeDataString(form[0]).Replace("+", " ");
var split = querystring.Split(new [] {'&'}, StringSplitOptions.RemoveEmptyEntries);
Dictionary<string, string> items = new Dictionary<string, string>();
foreach (string s in split)
{
string text = s.Substring(0, s.IndexOf("="));
string value = s.Substring(s.IndexOf("=")+1);
if (items.Keys.Contains(text))
items[text] = items[text] + "," + value;
else
items.Add(text, value);
}
foreach (var i in items)
{
collection.Add(i.Key, i.Value);
}
return collection;
}
答案 1 :(得分:0)
您需要使用模型进行反序列化
试试这个
var response = JsonConvert.DeserializeObject<YourModel>(collection);
var name = response.name ;
var id = response.id;
使用foreach循环,从列表中获取更多记录