为什么我要为每个动作方法创建一个视图?

时间:2011-12-29 19:30:07

标签: asp.net-mvc asp.net-mvc-3 c#-4.0 razor

您好;我是Asp.net软件开发人员。我尝试学习asp.net mvc。但我面对奇怪的事情。我的控制器方法名称必须与视图名称相反或相反。这很奇怪!请看我的_Layout:

    <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。我的愿望:我的视图页面名称必须独立于控制器类的方法名称。我的控制器: enter image description here

我的解决方案:

enter image description here

我认为Asp.net mvc很奇怪。我不喜欢控制器的动作名称名称必须与视图页面名称相同?怎么做?我认为View名称必须独立形成任何名称

3 个答案:

答案 0 :(得分:6)

您是正确的,默认情况下,您的视图名称必须与您的操作名称相同。但是,这很容易改变。您可以在控制器中调用View方法的this overload并传入您想要的任何视图名称:

return View("SomeViewName",articles);

答案 1 :(得分:1)

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

return View("MyView",articles);

答案 2 :(得分:0)

我有2条评论:

  • MVC中的GetAll()通常称为Index(如文章索引中所示)
  • 您可以为Method命名并返回一个名称不同的视图

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