asp.net mvc中带有连字符的动作名称

时间:2016-11-09 13:00:07

标签: asp.net-mvc asp.net-routing

我希望能够通过以下方式调用页面:

www.mydomain.com/articles/article-name-with-hyphens

我尝试以下方法:

public class ArticlesController : Controller
{
    [ActionName("article-name-with-hyphens")]
    public ActionResult ArticleNameWithoutHyphens()
    {
        return View("~/Content/Views/Articles/ArticleNameWithoutHyphens.cshtml");
    }
}

但是,我收到此消息:

  

视图'〜/ Content / Views / Articles / ArticleNameWithoutHyphens.cshtml'   或者找不到它的主人,或者没有视图引擎支持搜索到的   位置。搜索了以下位置:   〜/内容/查看/文章/ ArticleNameWithoutHyphens.cshtml

P.S。如果我将代码更改为常规方式:

public class ArticlesController : Controller
{
    public ActionResult ArticleNameWithoutHyphens()
    {
        return View("~/Content/Views/Articles/ArticleNameWithoutHyphens.cshtml");
    }
}

并致电:

  

www.mydomain.com/articles/ArticleNameWithoutHyphens

我得到了想要的页面。

我的问题在哪里?

1 个答案:

答案 0 :(得分:0)

您是否尝试使用Route属性?

[RoutePrefix("Articles")]
public class ArticlesController : Controller
{
    [Route("article-name-with-hyphens")]
    public ActionResult ArticleNameWithoutHyphens()
    {
        return View("~/Content/Views/Articles/ArticleNameWithoutHyphens.cshtml");
    }
}

因此您可以像 -

一样查询
localhost/MyApp/Articles/article-name-with-hyphens

这完全适用于MVC5。