【问题标题】:asp.net mcv: How to send javascript array to c# controllerasp.net mcv:如何将 javascript 数组发送到 c# 控制器
【发布时间】:2018-06-03 19:55:11
【问题描述】:

我有这个 javascript 数组:

formatData = {
                            title: title,
                            start: startFormat,
                            end: endFormat
                        };

我想将 formatData 发送到 C# 控制器的方法(并将其作为数组接收以发布到数据库):

//HomeController.cs
public ActionResult setReservation()
    {
        Database db = new Database();
        db.setReservations(reservation);
        return View();
    }

我已尝试使用以下 AJAX 代码发送 javascript 数组:

$.ajax({
                            url: '/Controller/HomeController',
                            type: 'POST',
                            contentType: 'application/json',
                            data: JSON.stringify({
                                formatData: formatData
                            }),

                        });

没有成功。浏览器“网络”选项卡显示 404。我做错了什么?如何从服务器端 c# 控制器中的客户端 javascript 中将数组捕获为类似 C# 数组?如何将 AJAX 帖子附加到 c# 控制器中的 setReservation 方法?

非常感谢。

编辑:formatData 应该传递给 Controller(HomeController.cs)。在控制器中,formData(title, start, end) 中的数据必须传递给另一个类(Database) 的对象(db) 的方法(setReservations),其中数据将被注入到一个sql 查询字符串中。

【问题讨论】:

  • MVC Route 在发出请求时不考虑控制器字,另外您需要通过 Action Method 或使用 Route 属性
  • 另外处理Ajax调用中的异常。否则,如果服务器异常发生,应用程序可能会遇到麻烦

标签: javascript c# asp.net-mvc controller


【解决方案1】:

首先,您的 AJAX 方法中的 URL 是错误的。试试这样的:

$.ajax({
                        url: '/Home/SetReservation',
                        type: 'POST',
                        contentType: 'application/json',
                        data: JSON.stringify({
                            formatData: formatData
                        }),

                    });

然后,在控制器中,您需要将列表作为您要使用的操作的参数。另外,将操作标记为 [HttpPost]:

[HttpPost]
public ActionResult SetReservation([FromBody]Reservation reservation)
    {
        Database db = new Database();
        db.setReservation(reservation);
        return View(); // you might want to redirect to another view instead
    }

【讨论】:

  • 感谢您的回答。您能否解释一下为什么使用 List 保留作为参数?不应该是 List,因为我发布的只是一个 JSON 字符串吗?
  • 对不起,那是我的错误。你说你想接收一个数组,我很困惑。如果可能,您发送的 JSON 对象将作为 C# 对象读取。因此,您可以使用 Model 类而不是字符串列表。如果您使用其他格式,也许您应该提供更多详细信息。
  • 对不起,我的错。我已经编辑了这个问题,并解释了它应该采取的步骤。我希望它澄清。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-21
  • 1970-01-01
  • 2020-10-05
  • 1970-01-01
  • 2020-10-21
  • 2013-09-28
相关资源
最近更新 更多