ASP.NET MVC5 RoutePrefix控制器名称

时间:2014-07-22 15:19:09

标签: asp.net-mvc-5

我从.NET MVC框架开始。我在MVC5中使用4.5。

我有一个控制器“APropos”,在“APropos”等文件夹中有一个视图。它很棒!

但我希望我的网址看起来像“site.com/A-Propos”而不是“site.com/APropos”。

我在Controller中阅读了一些关于“RoutePrefix”的帖子:

[RoutePrefix("a-propos")]
public class AProposController : Controller
{
    public ActionResult Index()
    {
        return View();
    }
}

我还将视图文件夹重命名为“a-propos”但它不起作用...(找不到ressource)

我确信有人知道解决方案!

感谢您的帮助: - )

2 个答案:

答案 0 :(得分:1)

感谢您的帮助! 它适用于操作,但对于Controller,它不起作用。

我指定了像msdn这样的RouteArea:

[RouteArea("APropos", AreaPrefix = "A-Propos")]
public class AProposController : Controller
{
    public ActionResult Index()
    {
        return View();
    }
}

网址始终为“monSite.com/apropos”而非“monSite.com/a-propos”... 我还要做点什么吗?

谢谢!

编辑:

我找到了解决方案!

在Route属性上,我指定了默认操作名称:

[RoutePrefix("A-Propos")]
[Route("{action=index}")]
public class AProposController : Controller
{
    public ActionResult Index()
    {
        return View();
    }
}

感谢您的帮助。

祝你好运

答案 1 :(得分:-1)

正如msdn所述,您必须像这样设置自定义路由前缀

[RoutePrefix("APropos", AreaPrefix = "A-Propos")]
public class AProposController : Controller
{
    public ActionResult Index()
    {
        return View();
    }
}

可以对控制器方法执行类似操作,因此您可以设置PretAPorter()方法的名称,如下所示:

[Route("PretAPorter", Name="Pret-A-Porter")]
public ActionResult PretAPorter()
{
...

(显然我没有包含êà