是否可以将两个视图与一个操作关联



我有以下自定义路线

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

这个自定义路由是为了实现以下url模式

  • Groups/pokerclub/members/-列出pokerclub组的所有成员
  • Groups/pokerclub/members/bob-列出bob的成员详细信息

我试了以下方法,但不起作用。它混淆了选择哪种操作的asp.netmvc。

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

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

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

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

RWendi

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

return View("MyView");

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

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

return View("Members", model);

您可以使用不同的方法:

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

最新更新