Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否可以将两个视图与一个操作关联?_C#_Asp.net Mvc_Asp.net Mvc 3 - Fatal编程技术网

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

C# 是否可以将两个视图与一个操作关联?,c#,asp.net-mvc,asp.net-mvc-3,C#,Asp.net Mvc,Asp.net Mvc 3,我有以下的定制路线 routes.MapRoute("custom", "Groups/{groupname}/{action}/{id}", new { controller = "Groups", action = "Index", id = UrlParameter.Optional }); 此自定义路由用于实现以下url模式 组/扑克俱乐部/成员/-列出扑克俱乐部组的所有成员 团体/扑克俱乐部/会员/鲍勃-列出鲍勃的会员详细信息 我尝试了以下方法,但不起作用。它混淆了asp.NET

我有以下的定制路线

routes.MapRoute("custom", "Groups/{groupname}/{action}/{id}", new { controller = "Groups", action = "Index", id = UrlParameter.Optional });
此自定义路由用于实现以下url模式

  • 组/扑克俱乐部/成员/-列出扑克俱乐部组的所有成员
  • 团体/扑克俱乐部/会员/鲍勃-列出鲍勃的会员详细信息
我尝试了以下方法,但不起作用。它混淆了asp.NETMVC选择哪个操作

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

    public ActionResult Members(string groupName)
    {
        return View();
    }
我可以想到两种可能的解决方案:

  • 具有不同的操作名称。e、 g.成员列表操作和成员操作
  • 使用简单的if语句在视图中处理此问题
我非常想维护我的url方案。因此,按照我最初的问题,如何将两种不同的观点与一个行动联系起来?谢谢


RWendi

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

return View("MyView");

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

其中显示
returnview()它需要参数,您可以让它使用您想要的任何视图

return View("Members", model);

您可以使用不同的方法:

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

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