我有一个 MVC4 Web API 应用程序。我将所有 APIController 类放在 Controllers/API 下,现在我在 Controllers/ 文件夹中创建 MVC Controller 类。
我添加了一个名为 UserController 的控制器,使用 EntityFramework 指定带有视图的读/写。这会自动在 /Views 下生成一个名为 Users 的文件夹。它包含 Create.cshtml、Delete.cshtml、Index.cshtml 等文件。
问题是我希望这个用户视图的 URI 是 /Admin/User/
我是否错过了指定在 Admin/ 文件夹下创建视图的机会?我尝试将整个文件夹复制到我想要的位置,但无法以这种方式访问。我删除了控制器和视图,然后重新创建了控制器,但我没有看到我可以设置的任何地方,这会导致在 Admin/下创建视图。
如何创建 MVC 控制器,并在特定 Views 文件夹下自动生成 CRUD 页面?
- 更新 -
我添加了 Admin/ 的路由。这是我的 RouteConfig.cs:
public class RouteConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "Administration",
routeTemplate: "Admin/{controller}/{action}"
);
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
我不知道这是否重要,但我有一个用于 Admin 的 MVC 控制器 - 它称为 AdminController。考虑到它可能会妨碍我,我改为routeTemplate: "Admin/{controller}/{action}"
,routeTemplate: "Admin1/{controller}/{action}"
但它没有任何区别。
这是我看到的错误:
<!--
[HttpException]: A public action method 'user' was not found on controller 'MYPROJECT.Web.API.Controllers.AdminController'.
at System.Web.Mvc.Controller.HandleUnknownAction(String actionName)
at System.Web.Mvc.Controller.<>c__DisplayClass1d.<BeginExecuteCore>b__18(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar)
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End()
at System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar)
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End()
at System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult)
at System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult)
at System.Web.Mvc.MvcHandler.<>c__DisplayClass8.<BeginProcessRequest>b__3(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar)
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End()
at System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)
at System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
-->
自动生成 CRUD 页面后,会创建一个新文件夹,其中包含 .cshtml 文件。除了,它是在/Views/User/
. 我可以移动(在 VS 中拖放)这个 /User/ 文件夹以便它位于/Views/Admin/User/
吗?(如果没有其他原因,只是为了组织)。