javascript - 如何将 Javascript 数组获取到 MVC 控制器
问题描述
我正在构建一个 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 控制器。
我有一个名为的类Menu
,Product
它看起来像这样:
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# 中。我希望能解释我的情况,不胜感激。
提前致谢!
解决方案
尝试这个,
var FullMenu = [];
var Menu1 = {};
Menu1['Year'] = "2016",
Menu1['Week'] = "Jan";
FullMenu.push(Menu1);
var Menu2 = {};
Menu2['Year'] = "2017",
Menu2['Week'] = "Feb";
FullMenu.push(Menu2);
var dataToPost = FullMenu;
$.ajax({
url: '@Url.Action("Index", "Home")',
type: 'POST',
data: {
methodParam: dataToPost
},
推荐阅读
- boolean-logic - 布尔逻辑或门和 Xor8Way
- spring-boot - 如何在 Spring Boot 中使用 Sphinxsearch?
- java - 一次获取队列中的所有消息(Spring Boot JMSListerner 注解)
- php - 我想制作一个 api,它将在服务器端( php )调用另一个 api 并返回响应 wordpress
- mongodb - 无法使用 oplog 中的时间戳进行过滤
- python - 我需要帮助我不断收到此错误。TypeError:'Board' 对象不可下标
- r - 在 R 中每六小时过滤一次日期时间
- python - 如果在 Python 中输入相同的数字,则 Python 代码会出错
- powerbi - 如何在 power bi 中从同一个连接连接多个数据库?
- windows - 确定 2 个 Windows 不同应用程序是否正在与其合法伙伴交谈的最佳实践方法?