Мои текущие правила маршрутизации
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
"Admin", // Route name
"Admin/{controller}/{action}/{id}", // URL with parameters
new { controller = "Admin", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
У меня есть несколько контроллеров, доступ к которым может получить только администратор. В настоящее время у меня есть меню по адресу:
/Admin/Index
Который перечисляет кучу ссылок действий. Прямо сейчас, щелкнув любую из этих ссылок, вы перенаправляете, как в этом примере:
/News/Index
Но мне нужно, чтобы это было похоже на
/Admin/News/Index
Эта текущая настройка вроде работает, но ссылки на моей домашней странице перехватываются неправильным правилом и собираются, например, / Admin / Article / 1, когда они должны быть просто / Article / 1
Я искал в StackOverflow ответ и нашел некоторые из них, которые подходят ближе - но я до сих пор не достаточно хорошо разбираюсь в маршрутизации, чтобы использовать их ответы. Любая помощь приветствуется.
EDIT
Вот набор ссылок с домашней страницы, которые неправильно отслеживаются правилами маршрутизации
<div id="menucontainer">
<ul id="menu">
<li><%: Html.ActionLink(" ", "About", "Home", null, new { ID = "AboutMHN" })%></li>
<li><%: Html.ActionLink(" ", "Products", "Home", null, new { ID = "Products" })%></li>
<li><%: Html.ActionLink(" ", "HubLocator", "Home", null, new { ID = "HubLocator" })%></li>
<li><%: Html.ActionLink(" ", "ResellerProgram", "Home", null, new { ID = "ResellerProgram" })%></li>
<li><%: Html.ActionLink(" ", "ResellerLogin", "Home", null, new { ID = "ResellerLogin" })%></li>
<li><%: Html.ActionLink(" ", "ContactUs", "Home", null, new { ID = "ContactUs" })%></li>
</ul>
</div>
Кроме того, у моего администратора есть только действие index. У меня есть контроллеры для всех других страниц «Администратор», например, у моего NewsController есть действия для индексации, создания, редактирования, удаления, для вывода списка всех новостных статей и выполнения необработанных операций. Я неправильно это структурирую?
Мой AdminController.cs
[Authorize(Roles = "Administrator")]
public class AdminController : Controller
{
//
// GET: /Admin/
public ActionResult Index()
{
return View();
}
}
Admin / Index, который возвращается, содержит меню с ActionLinks, как
<li><%: Html.ActionLink("News Articles", "Index", "News") %></li>
My NewsController.cs имеет Действия для выполнения операций CRUD. Я хотел бы, чтобы URL был
Admin/News/Edit/5
вместо
News/Edit/5