如何在MVC中使用Javasctipt/AAJAX将整个对象传递给控制器
本文关键字:对象 控制器 AAJAX MVC Javasctipt | 更新日期: 2023-09-27 18:30:06
我正试图找到一种方法,用Javascript/AAJAX将整个类从View传递给Controller。
我知道下面的Ajax代码可以用来只传递ID,但我可以传递整个模型吗?
@model User
$.ajax(
{
type: "POST",
url: "'User'",
data: @model.id,
success:
reloadPage()
});
我在搜索时看到以下解决方案:有没有办法通过";C#";对象通过AJAX连接到控制器?
我可以简单地这样做吗?:
@model User
$.ajax(
{
type: "POST",
url: "'User'",
data: @model,
success:
reloadPage()
});
这行得通吗?安全性如何?最好的方法是什么?
查看JavascriptSerializer.Serialize()方法。这样的东西:
@model User
$.ajax({
type: "POST",
url: "'User'",
data: JSON.parse(@(new JavascriptSerializer().Serialize(Model))),
success: reloadPage
});
本质上,这将您的模型序列化为JSON字符串,然后在客户端将其解析回JS对象,然后将其传递到AJAX请求中。当请求到达服务器时,MVC模型绑定处理基于JSON对象构建模型的实例。
请注意,旧版本的IE不支持JSON.parse。您可以使用json2.js填充IE的方法。
虽然不是最佳实践,但如果没有其他方法可以获得这些数据,则可以通过tempdata 传递数据
视图:
@{
TempData["myModel"] = Model;
}
控制器:
var myModel = TempData["myModel"];
TempData.Remove("myModel");
创建一个与原始对象具有相同属性的Json对象,将Json对象名称作为控制器参数名称。使用AJAX请求将Json对象传递给控制器
MVC模型绑定将处理剩下的事情
尝试使用序列化程序(jQuery)
例如。
$.ajax({
type: "POST",
url: "'User'",
data: $(form).serialize(),
success: reloadPage()
});