反序列化jQuery序列化表单
我正在尝试将表单输入传递给WebMethod并执行某些操作。 我使用了jQuery Serilize 。
$.fn.serializeNoViewState = function () { return this.find("input,textarea,select,hidden") .not("[type=hidden][name^=__]") .serialize(); } $(function () { $("#Button1").click(function (e) { var res = $("#myform").serializeNoViewState(); var jsonText = JSON.stringify({ bject: res }); $.ajax({ type: "POST", url: "Default.aspx/Test", data: jsonText, contentType: "application/json; charset=utf-8", dataType: "json", success: function (msg) { // alert("asd"); }, error: AjaxFailed }); }); }); function AjaxFailed(result) { alert("Failed"); }
在目标WebMethod我想反序列化我传递的对象。
[WebMethod()] public static bool test(string bject) { JavaScriptSerializer JsTool = new JavaScriptSerializer(); }
我试图使用Javascriptserilizer类。 但我没有成功。 现在我该如何使用这个对象? 我想用这种方式更简单地使用jQuery AJAX(例如,将表单输入传递给WebService并将其插入到数据库中)。 由于我想要做的动作是这样的吗? 欢迎您的建议,提示。
更新:
如何将Serialized JS对象映射到我的C#实体对象? 这种方式是好方法吗? 还是有更好的方法存在? 如果是,请给我一些信息
我建议你使用强类型。 因此,定义一个包含所有必要属性的类:
public class MyModel { public string Prop1 { get; set; } public string Prop2 { get; set; } }
然后让您的Web方法使用此对象:
[WebMethod()] public static bool test(MyModel bject) { ... }
属性的名称必须与您在AJAX请求中序列化的输入字段名称匹配。
也许你可以试试这个:
JavaScriptSerializer JsTool = new JavaScriptSerializer(); var listOfObjs = JsTool.Deserialize>(bject);
希望能帮助到你!
- “asp-format”未应用于标记助手
- 发布错误:无法加载文件或程序集“Microsoft.Web.XmlTransform”,Version = 1.4.0.0,Culture = neutral等等或其依赖项之一
- 在VisulaStudio 2017上创建和编辑ASP.net Web表单项目
- 如何从usercontrol页面后面的代码中找到ListView的ItemTemplate中的控件?
- asp.net treeview复选框选择
- 发送HTTP标头后,服务器无法修改cookie
- 我假设SqlParameter.IsNullable只在……时才有意义?
- 限制GridView列中的文本大小
- SQLite.Interop无法在清除解决方案时删除文件