可以将2个视图与一个动作关联吗?

问题描述:

我有以下的自定义路由可以将2个视图与一个动作关联吗?

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

这种定制路线是实现以下网址架构

  • 组/ pokerclub /会员/ - 列表pokerclub组的所有成员。
  • 团体/ pokerclub /会员/ bob - 列出bob的会员详细信息。

我试过以下,但它不工作。它混淆了asp.net。mvc的哪个行动来选择。

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

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

有迹象表明,我能想到的两种可能的解决方案:

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

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

RWendi

你只能有一个动作,但你可以执行任何你想要的逻辑动作里面,你可以调用名义发表意见:

return View("MyView"); 

在你的榜样,你会简单地如果id字段为空,则返回不同的视图。

在那里说return View();它需要的参数,你可以得到它使用任何视图,你想

return View("Members", model); 
+0

视图是一个方法?新的关键字不会起作用。 – RWendi

你可以使用不同的方法:

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

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