我理解公约的许多好处而不是ASP MVC的配置方法。也就是说,我想尝试使用基于配置的方法和路由属性来构建基于ASP MVC的站点。
实际上,我希望将所有控制器放在项目的根目录中(不要嵌套在'控制器'文件夹下)和旁边的视图(没有嵌套在views文件夹下面)
e.g。在根文件夹中的内容如下:
Posts.cs(Controller) - 会有通过属性映射到路径的方法
Posts.cshtml(查看)
我一直在寻找并且惊讶地发现这个话题很少。
例如,我的根目录中有以下控制器 (more.cs)
public class More : Controller
{
[Route("more")]
public ActionResult Index()
{
return View("~/more.cshtml");
}
}
我在RouteConfig.cs中调用它
routes.MapMvcAttributeRoutes();
但生成资源无法找到错误
再一次 - 我不是在寻找为什么我不想这样做...我理解会议的好处......但如果我想(正确或错误地),我怎么能做到。
答案 0 :(得分:0)
对于那些感兴趣的人......有许多必要的配置......试图这样做。
[RoutePrefix("mypath")]
Public class AnyNameController : Controller{
[Route("prettyUrlName/{parameter}")]
public ActionResult somefunction(string parameter){
///do stuff
}
}
为此,您需要在Web应用程序启动时调用以下内容:
RouteTable.Routes.MapMvcAttributeRoutes();
2.要将任何视图移出Views文件夹,需要将Views文件夹中的Web.config设置复制到要放置* .cshtml视图文件的whereever文件夹(例如root)
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>