代码之家  ›  专栏  ›  技术社区  ›  kovshenin

.NET MVC显式视图

  •  3
  • kovshenin  · 技术社区  · 14 年前

    嘿,又来了一个新手,正在玩.NETMVC。我的主要任务是在URL上创建一些半静态页面,如:

    • /关于/
    • /关于/工作/

    我正在使用一个名为Static的控制器,并连接了以下路由:

    routes.MapRoute(
      "About",
      "about/{id}",
      new { controller = "Static", action = "Index", id = UrlParameter.Optional }
    );
    

    • /静态/关于.aspx
    • /静态/联系人.aspx

    这个方法似乎工作得很好,但我不喜欢它的重定向,所以浏览到/about/contacts我会得到一个重定向到/Static/contacts,这不是我真正希望在URL中看到的。

    所以我的问题是-正确的方法是什么?有没有办法从我的索引操作中显式调用某个视图?

    谢谢, ~z~好的。

    3 回复  |  直到 14 年前
        1
  •  3
  •   Rohrbs    14 年前

    不要做重定向。不要在索引操作中使用switch语句,而是为每个页面(例如About、Contacts、Job)提供一个单独的操作,每个页面都有自己的视图。

    你的 Static

    public ActionResult Index()
    {
        return View();
    }
    
    public ActionResult About()
    {
        return View();
    }
    
    public ActionResult Contacts()
    {
        return View();
    }
    
    public ActionResult Jobs()
    {
        return View();
    }
    

    如果你需要对 Contacts Jobs ,可以在各自的行动范围内完成。

    return View("ViewName");
    

    View() 方法。其中有许多可以让您通过模型:

    return View("ViewName", Model);
    
        2
  •  2
  •   p.campbell    14 年前

    我建议你离开这里 Static ,并有一个 About 控制器。在该控制器中,每页一个方法。

    public ActionResult About() 
    {
       return View ("About");
    }
    
    //Jobs() and Contacts() follow the same pattern
    

    要匹配的3条路线:

    routes.MapRoute(
      "Jobs",
      "about/jobs",
      new { controller = "About", action = "Jobs" }
    );
    
    routes.MapRoute(
      "Contact",
      "about/contact",
      new { controller = "About", action = "Contact"  }
    );
    
    routes.MapRoute(
      "About",
      "about/",
      new { controller = "About", action = "About" }
    );
    
        3
  •  1
  •   Stefanvds    14 年前

    您不能从其他控制器返回视图,并且URL中有第一个控制器。

    我在我的管理员控制器里也有同样的功能。它只是一个有一些静态链接的页面,还有一些额外的页面。

    在索引.aspx我有

    <ul>
        <li>
            <%= Html.ActionLink("Evaluaties", "Evaluaties", "Admin")%></li>
        <li>
            <%= Html.ActionLink("ONAS aanbieders", "Index", "ONASAanbieder")%></li>
        <li>
            <%= Html.ActionLink("ONAS aanbod", "Index", "ONASAanbod")%></li>
        <li>
            <%= Html.ActionLink("Helpbox", "Index", "HelpBox")%></li>
    </ul>
    

    在我的控制器里

        public ActionResult Index() {
            return View();
        }
    
        public ActionResult Evaluaties() {
            return View();
        }
    

    显然我有一个 Evaluaties.aspx 在我的 Admin 文件夹中的 Views 文件夹。

    给我这个网址: http://localhost:50152/Admin/Evaluaties