MVC 4 サイトがあり、Views フォルダーの下に、さまざまなビュー用のフォルダーがあります。その一つが「サービス」という名前です。コントローラーの下に、サービス コントローラーがあります。すべてが順調に進みました。次に、サイトのルートに「Services」という名前のフォルダーを作成しました。これで、ルーティングが Views フォルダーの下を探すのではなく、そのフォルダーを使用してビューを探すようになりました。???? 誰かがこの現象についての洞察を私に与えることができますか? 単純に 2 番目のフォルダーの名前を変更しただけで、生活は良好になりましたが、ルーティングがデフォルトでビュー フォルダーに移動すると思っていたので、これは予想外でした。
質問する
301 次
3 に答える
-1
RouteConfig ファイルの App_Start フォルダーでルーティングを構成できます。追加すると
routes.MapRoute(
name: "",
url: "Services/Index/{id}",
defaults: new
{
controller = "Services",
action = "Index",
id = UrlParameter.Optional
});
routes.IgnoreRoute 行を超えると、MVC プロジェクトに Services フォルダーと、そのビューを含む Services コントローラーを含めることができます。
他のビューのいずれかに次のようなものがある場合:
@Html.ActionLink("To services", "Index", "Services")
~/Services だけでなく ~/Services/Index としてレンダリングされるようになりました
于 2013-05-29T20:31:45.710 に答える
-1
ルートが /Services/MethodName のようなもので、ビュー フォルダーも /Services/MethodName.ascx またはディスク上の何かである可能性があります...そして、MVC に既存のファイルをルーティングするように指示しない場合、それらは提供されます。代わりに、デフォルトでディスクからオフにします。これをオーバーライドするには、 Application_Start の Global.asax.cs でRouteCollection.RouteExistingFiles = true を設定します。
これは、MVC3 の既定のビュー エンジンからビューを見つけるための逆アセンブル コードです。
かみそり:
public RazorViewEngine(IViewPageActivator viewPageActivator) : base(viewPageActivator)
{
base.AreaViewLocationFormats = new string[]
{
"~/Areas/{2}/Views/{1}/{0}.cshtml",
"~/Areas/{2}/Views/{1}/{0}.vbhtml",
"~/Areas/{2}/Views/Shared/{0}.cshtml",
"~/Areas/{2}/Views/Shared/{0}.vbhtml"
};
base.AreaMasterLocationFormats = new string[]
{
"~/Areas/{2}/Views/{1}/{0}.cshtml",
"~/Areas/{2}/Views/{1}/{0}.vbhtml",
"~/Areas/{2}/Views/Shared/{0}.cshtml",
"~/Areas/{2}/Views/Shared/{0}.vbhtml"
};
base.AreaPartialViewLocationFormats = new string[]
{
"~/Areas/{2}/Views/{1}/{0}.cshtml",
"~/Areas/{2}/Views/{1}/{0}.vbhtml",
"~/Areas/{2}/Views/Shared/{0}.cshtml",
"~/Areas/{2}/Views/Shared/{0}.vbhtml"
};
base.ViewLocationFormats = new string[]
{
"~/Views/{1}/{0}.cshtml",
"~/Views/{1}/{0}.vbhtml",
"~/Views/Shared/{0}.cshtml",
"~/Views/Shared/{0}.vbhtml"
};
base.MasterLocationFormats = new string[]
{
"~/Views/{1}/{0}.cshtml",
"~/Views/{1}/{0}.vbhtml",
"~/Views/Shared/{0}.cshtml",
"~/Views/Shared/{0}.vbhtml"
};
base.PartialViewLocationFormats = new string[]
{
"~/Views/{1}/{0}.cshtml",
"~/Views/{1}/{0}.vbhtml",
"~/Views/Shared/{0}.cshtml",
"~/Views/Shared/{0}.vbhtml"
};
base.FileExtensions = new string[]
{
"cshtml",
"vbhtml"
};
}
ウェブフォーム:
public WebFormViewEngine(IViewPageActivator viewPageActivator) : base(viewPageActivator)
{
base.MasterLocationFormats = new string[]
{
"~/Views/{1}/{0}.master",
"~/Views/Shared/{0}.master"
};
base.AreaMasterLocationFormats = new string[]
{
"~/Areas/{2}/Views/{1}/{0}.master",
"~/Areas/{2}/Views/Shared/{0}.master"
};
base.ViewLocationFormats = new string[]
{
"~/Views/{1}/{0}.aspx",
"~/Views/{1}/{0}.ascx",
"~/Views/Shared/{0}.aspx",
"~/Views/Shared/{0}.ascx"
};
base.AreaViewLocationFormats = new string[]
{
"~/Areas/{2}/Views/{1}/{0}.aspx",
"~/Areas/{2}/Views/{1}/{0}.ascx",
"~/Areas/{2}/Views/Shared/{0}.aspx",
"~/Areas/{2}/Views/Shared/{0}.ascx"
};
base.PartialViewLocationFormats = base.ViewLocationFormats;
base.AreaPartialViewLocationFormats = base.AreaViewLocationFormats;
base.FileExtensions = new string[]
{
"aspx",
"ascx",
"master"
};
}
于 2013-05-29T19:59:44.377 に答える