MVC4 Web API アプリケーションがあります。すべての APIController クラスを Controllers/API の下に配置し、現在は Controllers/ フォルダーに MVC コントローラー クラスを作成しています。
EntityFramework を使用してビューで読み取り/書き込みを指定する UserController という名前のコントローラーを追加します。これにより、Users という名前の /Views の下にフォルダーが自動的に生成されます。Create.cshtml、Delete.cshtml、Index.cshtml などのファイルが含まれています。
問題は、この User ビューの 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/
ます。この /User/ フォルダーを に移動 (VS でドラッグ/ドロップ) しても問題あり/Views/Admin/User/
ませんか? (他の理由ではなく、組織のための場合)。