我正在尝试将表单输入传递给WebMethod并执行某些操作。 我使用了jQuery Serilize。
<script type="text/javascript">
$.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");
}
</script>
目标WebMethod中的我想反序列化我传递的对象。
[WebMethod()]
public static bool test(string bject)
{
JavaScriptSerializer JsTool = new JavaScriptSerializer();
}
我试过使用Javascriptserilizer Class。但我没有成功。 现在我该如何使用这个对象? 我想用这种方式更简单地使用jQuery AJAX(例如将表单输入传递给WebService并将其插入到数据库中)。由于我想要做的动作是这样的吗? 欢迎您的建议,提示。
如何将Serialized JS对象映射到我的C#实体对象? 这种方式是好方法吗?还是有更好的方法存在?如果是,请给我一些信息
答案 0 :(得分:4)
我建议您使用强类型。因此,定义一个包含所有必要属性的类:
public class MyModel
{
public string Prop1 { get; set; }
public string Prop2 { get; set; }
}
然后让你的web方法接受这个对象:
[WebMethod()]
public static bool test(MyModel bject)
{
...
}
属性的名称必须与您在AJAX请求中序列化的输入字段名称匹配。
答案 1 :(得分:2)
可能你可以试试这个:
JavaScriptSerializer JsTool = new JavaScriptSerializer();
var listOfObjs = JsTool.Deserialize<List<YourDataType>>(bject);
希望它有所帮助!