我有以下行动:
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
答案 0 :(得分:1)
您必须意识到默认情况下,方法名称也是操作名称。但是,一旦您使用[ActionName]
属性覆盖该约定,您访问该操作的Url也会发生变化。
在你的情况下可能是:
/文章/ BLA-BLA-物品-1
并且,当您在未指定视图名称的情况下使用return View()
时,将从当前路由参数自动确定,并在应用您的属性后,该值将为bla-bla-article-1
。
这就是你必须明确指定它的原因:
return View("Article01");
请参阅MSDN