如何在MVC中使用Javasctipt/AAJAX将整个对象传递给控制器
How to pass an entire object to a controller with Javasctipt / AJAX in MVC?
我正试图找到一种方法,用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()
});
相关文章:
- 在控制器和数据对象之间同步数据
- 在Angular中呈现DOM对象时,如何调用控制器中指定的函数
- AngularJS-需要在控制器更改时清除javascript对象
- $scope$观察数组中的一个特定对象——Angular JS控制器
- 使用查询将对象数组发布到asp.net-mvc控制器操作的正确方法是什么
- 如何将json文件中的数据提取到对象数组中,并在两个控制器之间共享
- 阻止控制器创建新的作用域对象
- 在angularJS中使用模态窗口时,在控制器之间共享对象数组
- 面向对象,控制器问题,初学者Javascript
- 角度控制器不绑定服务对象属性 ng-repeat
- 表示不将对象从服务发送到 API 控制器
- 我可以将控制器注入到这个 Formly 选择框对象中吗?
- 如何将对象列表传递到MVC4中的控制器方法
- 如何测试从promise对象获取数据的控制器
- 如何使用springmvc控制器通过ajax sumbit传递文件对象
- 如何从控制器返回对象列表并使用JQuery(SpringMVC,ajax)显示它们
- 通过 AngularJS 中的 ngClick 将整个对象或仅属性从视图传递到控制器
- 使用双向绑定将对象从角度视图动态添加/创建到控制器的数组
- 按ember.js对象控制器中的属性排序
- 如何使用新的controllerAs语法和面向对象控制器在Angular中实现双向绑定