如何用JavaScript加载带参数的C# MVC ActionResult?周五加载代码失效求助
解决JavaScript加载MVC ActionResult的问题
看起来你卡在了日期处理和MVC Action URL生成这两个关键点上,咱们一步步来把问题理顺:
1. 先修正日期解析逻辑
你当前的日期构造顺序写反了!因为datepicker设置的是dd-mm-yy格式,拆分后数组是[日, 月, 年],但new Date()的参数顺序是(年, 月份索引, 日)(月份索引要减1,年份建议转成4位避免歧义),调整后的代码:
// 先初始化日期选择器并绑定选中事件(比单独取值更合理) jQuery('#orderForDate').datepicker({ dateFormat: "dd-mm-yy", onSelect: function(selectedDate) { // 拆分日期字符串:dd-mm-yy → [dd, mm, yy] const dateParts = selectedDate.split("-"); // 构造正确的Date对象,年份补全为4位 const targetDate = new Date( parseInt(`20${dateParts[2]}`), parseInt(dateParts[1]) - 1, parseInt(dateParts[0]) ); const dayOfWeek = targetDate.getDay(); // 0=周日,5=周五 if (dayOfWeek === 5) { console.log('friday baby!'); // 接下来处理Action URL的生成和视图加载 } } });
2. 正确生成MVC Action的访问URL
你用@Html.Raw(Url.Action(...))的思路是对的,但要完整指定Action和Controller名称,服务器端会在页面渲染时把它替换成真实的路由地址。比如你的Action叫FridaySpecialView,Controller叫Order,代码应该这样写:
// 接上面的if判断 const actionUrl = '@Html.Raw(Url.Action("FridaySpecialView", "Order"))'; // 两种加载方式选其一: // 方式1:直接跳转到Action对应的视图页面 window.location.href = actionUrl; // 方式2:用AJAX把视图内容加载到页面指定容器里 jQuery('#your-target-container').load(actionUrl);
3. 额外注意事项
- 确保你的MVC Action方法返回的是
ViewResult,比如:
public ActionResult FridaySpecialView() { // 可以根据需求传递模型数据 return View(); }
- 如果用AJAX加载,要确保页面上存在对应ID的容器,且Action没有权限限制(比如未加
[AllowAnonymous]导致的401错误) - 测试时可以先打印
actionUrl,确认生成的地址是正确的路由
完整可运行示例
把所有逻辑整合起来的最终代码:
jQuery(document).ready(function() { jQuery('#orderForDate').datepicker({ dateFormat: "dd-mm-yy", onSelect: function(selectedDate) { const dateParts = selectedDate.split("-"); const targetDate = new Date( parseInt(`20${dateParts[2]}`), parseInt(dateParts[1]) - 1, parseInt(dateParts[0]) ); const dayOfWeek = targetDate.getDay(); if (dayOfWeek === 5) { console.log('friday baby!'); const actionUrl = '@Html.Raw(Url.Action("FridaySpecialView", "Order"))'; // 这里选择跳转或AJAX加载,按需切换 // window.location.href = actionUrl; jQuery('#view-container').load(actionUrl); } } }); });
内容的提问来源于stack exchange,提问作者valheru
相关产品推荐
相关产品推荐

