Asp.net mvc 为什么要为每个操作方法创建视图?

Asp.net mvc 为什么要为每个操作方法创建视图?,asp.net-mvc,asp.net-mvc-3,c#-4.0,razor,Asp.net Mvc,Asp.net Mvc 3,C# 4.0,Razor,嗨;我是一名Asp.net软件开发人员。我试着学习asp.NETMVC。但我面对着一件奇怪的事情。我的控件方法名称必须与视图名称相同或相反。真奇怪!请看我的布局: <nav> <ul id="menu"> <li>@Html.ActionLink("Home", "Index", "Home")</li>

嗨;我是一名Asp.net软件开发人员。我试着学习asp.NETMVC。但我面对着一件奇怪的事情。我的控件方法名称必须与视图名称相同或相反。真奇怪!请看我的布局:

    <nav>
            <ul id="menu">
                <li>@Html.ActionLink("Home", "Index", "Home")</li>
                <li>@Html.ActionLink("About", "About", "Home")</li>
                 <li>@Html.ActionLink("Article", "GetAll", "Article")</li>
            </ul>
        </nav>
文章查看页面需要GetAll方法,也需要GetAll.cshtml。我的愿望:我的视图页面名称必须独立于控制器类的方法名称。我的控制器:

我的解决方案:


我觉得Asp.NETMVC很奇怪。我不喜欢控制器的操作名称必须与查看页面名称相同?怎么做?我认为视图名称必须独立于任何名称

您是正确的,默认情况下,视图名称必须与操作名称相同。然而,这很容易改变。您只需在控制器中调用View方法,并传入所需的任何视图名称:

return View("SomeViewName",articles);
我有两点意见:

MVC中的GetAll通常被称为索引,就像在文章索引中一样 您可以将方法命名为某物,然后返回具有不同名称的视图

public ActionMethod GetAll()
{
  return View("Index");
}

它不必与方法的名称相同。默认情况下,MVC3将查找具有相同名称的视图,但您可以创建具有任何名称的视图,并告诉MVC返回该视图:

return View("MyView",articles);