rav*_*ran 42 asp.net-mvc jquery asp.net-ajax
在使用以下代码进行自动刷新时,我假设当我发布帖子时,模型会自动发送到控制器:
$.ajax({
url: '<%=Url.Action("ModelPage")%>',
type: "POST",
//data: ??????
success: function(result) {
$("div#updatePane").html(result);
},
complete: function() {
$('form').onsubmit({ preventDefault: function() { } });
}
});
Run Code Online (Sandbox Code Playgroud)
每次有帖子时,我都需要增加模型中的value属性:
public ActionResult Modelpage(MyModel model)
{
model.value = model.value + 1;
return PartialView("ModelPartialView", this.ViewData);
}
Run Code Online (Sandbox Code Playgroud)
但是当使用jQuery AJAX请求发布页面时,模型不会传递给控制器.如何在AJAX请求中发送模型?
Chr*_*s S 49
简单的答案(在MVC 3以后,甚至可能是2)是你不需要做任何特别的事情.
只要您的JSON参数与模型匹配,MVC就足够聪明,可以根据您提供的参数构造新对象.不存在的参数只是默认值.
例如,Javascript:
var values =
{
"Name": "Chris",
"Color": "Green"
}
$.post("@Url.Action("Update")",values,function(data)
{
// do stuff;
});
Run Code Online (Sandbox Code Playgroud)
该模型:
public class UserModel
{
public string Name { get;set; }
public string Color { get;set; }
public IEnumerable<string> Contacts { get;set; }
}
Run Code Online (Sandbox Code Playgroud)
控制器:
public ActionResult Update(UserModel model)
{
// do something with the model
return Json(new { success = true });
}
Run Code Online (Sandbox Code Playgroud)
Lav*_*iak 25
如果需要将FULL模型发送到控制器,首先需要将模型用于您的javascript代码.
在我们的应用程序中,我们使用扩展方法执行此操作:
public static class JsonExtensions
{
public static string ToJson(this Object obj)
{
return new JavaScriptSerializer().Serialize(obj);
}
}
Run Code Online (Sandbox Code Playgroud)
在视图中,我们使用它来渲染模型:
<script type="javascript">
var model = <%= Model.ToJson() %>
</script>
Run Code Online (Sandbox Code Playgroud)
然后,您可以将模型变量传递到$ .ajax调用中.
我认为您需要显式传递数据属性。一种方法是使用 data = $('#your-form-id').serialize();
这篇文章可能会有所帮助。 使用 jquery 和 ajax 发布
看看这里的文档.. Ajax 序列化
| 归档时间: |
|
| 查看次数: |
151882 次 |
| 最近记录: |