如何获取Javascript数组到MVC控制器

Luddep

我正在构建一个asp.net应用程序,用户可以在其中订购食物,并且我还有一个管理页面,管理员可以在该页面登录并在特定星期内制作菜单。我已经解决了“菜单制作器”中的所有问题,当我按下“保存”按钮时,菜单中的每个值都将进入一个javascript数组。

所以要解决这个问题。当我按下保存按钮时,我想将数组序列化为json,然后将其传递给我的mvc控制器。

我正在尝试使用Ajax。这是保存按钮单击的完整代码:

$("#CreateMenuBtn").on('click', function () {
FullMenu.push(
    {
        "Year": $("#YearInput").val(),
        "Week": $("#WeekInput").val(),
        "Products": MenuArray
    }
);
var dataToPost = JSON.stringify({ methodParam: FullMenu });

$.ajax({
    type: "POST",
    url: '@Url.Action("Index", "Home")',
    contentType: "application/json; charset=utf-8",
    dataType: 'JSON',
    data: dataToPost,
    traditional: true
});
console.log(FullMenu);
});

当我现在调试并检查data的值是否完全正确并且为JSON格式时:

methodParam
 [0]
   Year: "2019"
   Week: "4"
   Products:
   [0]
      WeekDay: "Måndag"
      Food: "kött"
      Price: "54kr"
      Cabinet: "C"
   [1]
      Weekday: "Onsdag"
      Food: "Köttbullar"
      Price: "80kr"
      Cabinet: "B"

现在,我想将其发送给我的MVC控制器。

我有一个叫的类MenuProduct它看起来像这样:

public class Menu
{
    public int ID { get; set; }

    public string Year { get; set; }

    public string Week { get; set; }

    public virtual List<Product> Products { get; set; }

}



public class Product
{
    public int ID { get; set; }

    public string Description { get; set; }

    public int Price { get; set; }

    public char Cabinet { get; set; }

    public int MenuID { get; set; }

    public int Day { get; set; }
}

这是我在控制器中想到的:

    public IActionResult Index(List<Menu> methodParam)
    {
       foreach(Menu item in methodParam)
        {
            string des = item.Week + item.Year;
        }
        return View();
    }

但是当我在foreach循环内的动作中进行调试时,methodParam得到的值为0。

所以我需要帮助的是如何将数组放入c#。我希望这能解释我的情况,希望能得到som的帮助。

提前致谢!

Luddep

这解决了问题:D将网址更改为 /Home(Controller name)/Index(Action name)

var dataToPost = JSON.stringify(jsonData);

$.ajax({
    type: "POST",
    url: '/Home/Create',
    contentType: "application/json; charset=utf-8",
    dataType: 'JSON',
    data: dataToPost,
    traditional: true
});

动作需要[FromBody]像这样:

[HttpPost]
public IActionResult Create([FromBody] Dictionary<string, object> jsonMenu)
{
    //Code
    return RedirectToAction("Index", "Home");
}

非常感谢你们想要帮助的人:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从控制器到JavaScript作为响应获取变量?

如何使用javascript在mvc控制器中传递数组

如何从javascript中的控制器(MVC)获取bool?

如何通过从angularJS控制器到MVC5控制器的Ajax调用获取JSON

数组到带有Ajax的MVC控制器

将数组从Jsp传递到控制器[Spring MVC]

数组未从视图MVC传递到控制器

获取 HTML 表格内容到 MVC 控制器

无法从ajax获取数组到控制器

如何获取数组值到Laravel控制器并插入数据库

如何在mvc3控制器中的json数组中获取值?

将数据从javascript传递到MVC控制器

如何将元组从JavaScript传递到ASP.NET MVC控制器操作

如何将数据从Ajax JavaScript传递到MVC控制器?

如何将列表从控制器传递到ASP.NET MVC中的javascript函数?

如何使用ajax将数组对象从Javascript传递到c#控制器

从控制器到JavaScript的整数的二维数组

如何在 javascript 中构建数组并在 c# mvc 控制器中接收它

JavaScript + Spring MVC-如何从控制器发送的对象中获取值?

如何使用Ajax在JavaScript中获取MVC控制器json数据

在Javascript函数中获取MVC控制器名称

如何从控制器返回多维数组到ajax成功?

如何通过 AJAX 访问从控制器检索到的数组

如何从模型到控制器获取价值

如何从html获取选择值到控制器

如何从控制器模型到视图获取数据

我如何从mongodb获取值到angularjs控制器

如何从弹簧控制器获取值到 Angular js

如何从弹簧控制器获取数据到角度js