C# tryupdatemodel无法通过ajaxcall工作?
我试图通过ajax调用将我的模型发布到服务器上。不幸的是,模型没有更新C# tryupdatemodel无法通过ajaxcall工作?,c#,asp.net-mvc-2,jquery,C#,Asp.net Mvc 2,Jquery,我试图通过ajax调用将我的模型发布到服务器上。不幸的是,模型没有更新 <script src="../../Scripts/jquery-1.4.1.min.js" type="text/javascript"></script> <form id="ajaxForm" action=""> <div> name:<%= Html.TextBoxFor(model => model.number) %>
<script src="../../Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
<form id="ajaxForm" action="">
<div>
name:<%= Html.TextBoxFor(model => model.number) %>
</div>
<%--hidden vars--%>
<input type="hidden" id="Hidden1" />
<%= Html.Hidden("myModel", Model.Serialize())%>
</form>
<button id="submitbutton">
save
</button>
<script type="text/javascript">
$(document).ready(function () {
$("#submitbutton").click(function () {
var FormData = $("#ajaxForm").serialize();
$.ajax({
type: 'POST',
url: "/Home/SaveAjax",
data: { inputdata: $("#myModel").val() },
datatype: 'JSON'
});
})
});
</script>
[HttpPost]
public JsonResult SaveAjax(string inputdata)
{
MyModel myModel = (inputdata.DeSerialize() ?? TempData["myModel"] ?? new MyModel()) as MyModel;
//TryUpdateModel does not update my model??
TryUpdateModel(myModel);
TempData["myModel"] = myModel;
return Json(new { resultaat = "finished" });
}
[Serializable]
public class MyModel
{
//[Required]
public string name { get; set; }
public bool flag { get; set; }
public int number { get; set; }
public string address { get; set; }
public string abn { get; set; }
public string postalcode { get; set; }
}
public static class Extensions
{
public static string Serialize(this object myobject)
{
var sw = new StringWriter();
var formatter = new LosFormatter();
formatter.Serialize(sw, myobject);
return sw.ToString();
}
public static object DeSerialize(this string mystring)
{
if (string.IsNullOrEmpty(mystring))
return null;
var formatter = new LosFormatter();
MyModel mym = (MyModel)formatter.Deserialize(mystring);
return mym;
}
}
名称:型号.编号)%>
拯救
$(文档).ready(函数(){
$(“#提交按钮”)。单击(函数(){
var FormData=$(“#ajaxForm”).serialize();
$.ajax({
键入:“POST”,
url:“/Home/SaveAjax”,
数据:{inputdata:$(“#myModel”).val()},
数据类型:“JSON”
});
})
});
[HttpPost]
公共JsonResult SaveAjax(字符串输入数据)
{
MyModel MyModel=(inputdata.DeSerialize()?TempData[“MyModel”]?new MyModel())作为MyModel;
//TryUpdateModel不更新我的模型??
TryUpdateModel(myModel);
TempData[“myModel”]=myModel;
返回Json(新的{resultaat=“finished”});
}
[可序列化]
公共类MyModel
{
//[必需]
公共字符串名称{get;set;}
公共布尔标志{get;set;}
公共整数{get;set;}
公共字符串地址{get;set;}
公共字符串abn{get;set;}
公共字符串postalcode{get;set;}
}
公共静态类扩展
{
公共静态字符串序列化(此对象myobject)
{
var sw=新的StringWriter();
var formatter=新的LosFormatter();
序列化(sw,myobject);
返回sw.ToString();
}
公共静态对象反序列化(此字符串mystring)
{
if(string.IsNullOrEmpty(mystring))
返回null;
var formatter=新的LosFormatter();
MyModel mym=(MyModel)格式化程序。反序列化(mystring);
返回mym;
}
}
在AJAX请求中,您只发送隐藏字段的值:
data: { inputdata: $("#myModel").val() }
因此,您不能期望在服务器上获得此隐藏字段以外的任何其他值。如果要发布整个表单内容,请使用在代码中声明但未使用的formData
变量:
$('#submitbutton').click(function () {
var formData = $('#ajaxForm').serialize();
$.ajax({
type: 'POST',
url: '/Home/SaveAjax',
data: formData,
dataType: 'json'
});
});
虽然我把一切都看作是发送完整的表格…我只是缺少数据类型:JSON。。。。通过添加该行。。。工作!