是否可以将2个视图与一个动作相关联?

时间:2012-08-22 01:37:08

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

我有以下自定义路线

routes.MapRoute("custom", "Groups/{groupname}/{action}/{id}", new { controller = "Groups", action = "Index", id = UrlParameter.Optional });

此自定义路由是为了实现以下网址架构

  • Groups / pokerclub / members / - 列出pokerclub集团的所有成员。
  • Groups / pokerclub / members / bob - 列出bob。
  • 的成员详情

我尝试了以下但它不起作用。它混淆了asp .net mvc选择哪个动作。

public ActionResult Members(string groupName, string id)
    {
        return View();
    }

    public ActionResult Members(string groupName)
    {
        return View();
    }

我能想到两种可能的解决方案:

  • 有不同的动作名称。例如会员名单行动和成员行动。
  • 使用简单的if语句在视图中处理它。

我非常想保留我的网址方案。因此,根据我原来的问题,如何将两个不同的观点与一个行动相关联?感谢。

RWendi

3 个答案:

答案 0 :(得分:3)

您只能有一个操作,但您可以在该操作中执行所需的任何逻辑,并且可以按名称调用视图:

return View("MyView");

在您的示例中,如果id字段为空,则只返回不同的视图。

答案 1 :(得分:2)

它显示return View();它需要参数,您可以使用它来使用您想要的任何视图

return View("Members", model);

答案 2 :(得分:0)

您可以使用不同的方法:

[HttpGet]
public ActionResult Members(string groupName, string id)
{
    return View();
}

[HttpPost]
public ActionResult Members(string groupName)
{
    return View();
}