我有以下自定义路线
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();
}