我正在开发一个具有不同KPI的仪表板。还有一个与工具的交互,这就是我选择MVC的原因。
现在我有一个带导航栏的布局页面。在导航栏中,我正在与@ Url.Action链接。 到现在为止还挺好。每个页面都在工作,如果链接完成存在另一个Controller,它也可以工作。只有在一个链接中我才有问题 - 我总是得到“资源未找到”的错误。
LockedOrder页面无效。
我的布局视图如下所示:
<ul class="treeview-menu">
<li>
<a href="@Url.Action("Index", "Home")"><i class="fa fa-circle-o text-yellow"></i>Lab Dashboard<i class="fa fa-angle-left pull-right"></i></a>
<ul class="treeview-menu">
<li><a href="@Url.Action("Index", "Home")"><i class="fa fa-circle-o"></i>Home</a></li>
<li><a href="@Url.Action("Load" , "LockedOrder")"><i class="fa fa-circle-o"></i>Locked Order</a></li>
</ul>
</li>
<li><a href="@Url.Action("Index","DashboardXY" )"><i class="fa fa-circle-o text-blue"></i>DashboardXY</a></li>
</ul>
这是我的LockedOrder控制器:
public class LockedOrderController : Controller
{
List<string> table = new List<string>();
// GET: LockedOrder
public ActionResult Load()
{
table = LoadTable(table);
return View();
}
}
视图Load.cshtml存在于正确的视图文件夹中。
我的RouteConfig文件:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
// Locked Order
routes.MapRoute(
name: "LockedOrder",
url: "LockedOrder/{Load}/{id}",
defaults: new { controller = "LockedOrder", action = "Load" }
);
// Dashboard Resources Department Route
routes.MapRoute(
name: "DashboardXY",
url: "dashboard/{ departmentchooser}",
defaults: new { controller = "DashboardXY", action = "depchooser" }
);
routes.MapRoute(
name: "Default",
url: "Home/{action}/{id}",
defaults: new { controller = "Home", action = "Index" }
);
}
那么为什么所有链接都工作,只有LockedOrder的链接没有?
请帮帮我。 我是ASP.Net MVC的新手,所以如果不清楚,请问我:)
谢谢!
更新:这是我的错误消息,我得到了(对不起,它用德语,但也许可以帮助你帮助我:))
更新2 现在我的代码看起来像这样: RouteConfig LockedOrderController
答案 0 :(得分:1)
尝试更改此路线配置:
// Locked Order
routes.MapRoute(
name: "LockedOrder",
url: "LockedOrder/{Load}/{id}",
defaults: new { controller = "LockedOrder", action = "Load" }
);
到此:
// Locked Order
routes.MapRoute(
name: "LockedOrder",
url: "LockedOrder/{action}/{id}",
defaults: new { controller = "LockedOrder", action = "Load", id = UrlParameter.Optional }
);
答案 1 :(得分:1)
以下Url.Action
不起作用
@Url.Action("Load" , "LockedOrder")
因为您在id
路由中将LockedOrder
指定为必需的参数。
routes.MapRoute(
name: "LockedOrder",
url: "LockedOrder/{Load}/{id}", // {id} is required because there is no default.
defaults: new { controller = "LockedOrder", action = "Load" }
);
{id}
routes.MapRoute(
name: "LockedOrder",
url: "LockedOrder/{Load}",
defaults: new { controller = "LockedOrder", action = "Load" }
);
{id}
标记为可选请注意,这会使/LockedOrder/Load/123
和/LockedOrder/Load
作为活动网址转到同一操作方法。
routes.MapRoute(
name: "LockedOrder",
url: "LockedOrder/{Load}/{id}",
defaults: new { controller = "LockedOrder", action = "Load", id = UrlParameter.Optional }
);
id
Url.Action
作为路线值
@Url.Action("Load", "LockedOrder", new { id = 123 })