3

我有以下自定义路线

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

这个自定义路由是为了实现下面的url schema

  • 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();
    }

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

  • 有不同的动作名称。例如Memberlist 动作和member 动作。
  • 使用简单的 if 语句在视图中处理此问题。

我非常想维护我的 url 方案。因此,根据我最初的问题,如何将两种不同的观点与一个动作相关联?谢谢。

温迪

4

3 回答 3

3

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

return View("MyView");

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

于 2012-08-22T01:40:11.850 回答
2

它说它return View(); 需要参数,你可以让它使用你想要的任何视图

return View("Members", model);
于 2012-08-22T01:40:19.257 回答
0

您可以使用不同的方法:

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

[HttpPost]
public ActionResult Members(string groupName)
{
    return View();
}
于 2012-08-22T06:00:13.423 回答