可以将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);
答
你可以使用不同的方法:
[HttpGet]
public ActionResult Members(string groupName, string id)
{
return View();
}
[HttpPost]
public ActionResult Members(string groupName)
{
return View();
}
视图是一个方法?新的关键字不会起作用。 – RWendi