操作找不到View或其主人

时间:2016-11-08 10:44:17

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

我有以下行动:

public class ArticlesController : Controller
{

    public ActionResult Article01()
    {
        return View();
    }
}

返回视图,一切似乎都正常。

现在我尝试添加ActionName:

    [ActionName("bla-bla-article-1")]
    public ActionResult Article01()
    {
        return View();
    }

现在调用:/ Article / Article01返回

  

'无法找到资源。'

现在我试试这个:

[ActionName("bla-bla-article-1")]
public ActionResult Article01()
{
    return View("~/Content/Views/Articles/Article01.cshtml");
}

我在这里得到:

  

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

1 个答案:

答案 0 :(得分:1)

您必须意识到默认情况下,方法名称也是操作名称。但是,一旦您使用[ActionName]属性覆盖该约定,您访问该操作的Url也会发生变化。

在你的情况下可能是:

  

/文章/ BLA-BLA-物品-1

并且,当您在未指定视图名称的情况下使用return View()时,将从当前路由参数自动确定,并在应用您的属性后,该值将为bla-bla-article-1

这就是你必须明确指定它的原因:

return View("Article01");

请参阅MSDN