我正在构建一个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#。我希望这能解释我的情况,希望能得到som的帮助。
提前致谢!
这解决了问题: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] 删除。
我来说两句