c# - 如何在 MVC 中使用 Javascript/AJAX 将整个对象传递给 Controller ​​?

标签 c# javascript jquery ajax model-view-controller

我正在尝试找出一种方法,使用 Javascript/AJAX 将整个类从我的 View 传递到 Controller 。

我知道以下 Ajax 代码可用于仅传递 ID,但我可以传递整个模型吗?

    @model  User
    $.ajax(
        {
            type: "POST",
            url: "\User\",
            data: @model.id,
            success:
                reloadPage()
        });

搜索时看到如下解决方案: Is there a way to pass a "C#" object to a controller via 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 模型绑定(bind)处理基于 JSON 对象构建模型的实例。

请注意,旧版本的 IE 不支持 JSON.parse。你可以获得json2.js为 IE 填充方法。

关于c# - 如何在 MVC 中使用 Javascript/AJAX 将整个对象传递给 Controller ​​?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10038216/

相关文章:

javascript - 动态更改 filterToolbar 选项

jquery - 如何在 jQuery 中构建动画标题

php - Yii CGridView - 自定义列

javascript - 如何在for循环中添加事件监听器?

jquery - 在响应模式下重新排序 Twitter Bootstrap 行

c# - ProgressBar 值中的标签未出现

c# - 面板 2 的 splitcontainer splitterdistance

如果第二次启动,C# 程序只能运行一次 + BringToFront

c# - 为什么逻辑调用上下文不跨线程传播?

javascript - 基本 jQuery slider 中上一张/下一张幻灯片的自定义链接触发器