C# 无论如何,在MVC的RouteConfig中有一个动作,而不必指定一个特定的动作?

C# 无论如何,在MVC的RouteConfig中有一个动作,而不必指定一个特定的动作?,c#,asp.net-mvc,asp.net-mvc-4,routing,routes,C#,Asp.net Mvc,Asp.net Mvc 4,Routing,Routes,所以我有一个控制器,可以容纳大约10个动作。每个动作/视图只包含一个图像。我试图做的是为每个操作向URL发送一个参数(该参数对每个操作执行相同的操作) 我是否可以在控制器中的任何操作中执行操作,这样我就不必指定10个不同的路由?如果我正确理解您的评论,您希望使路由看起来像: routes.MapRoute("MyRoute", "{controller}/{action}/{myparameter}", new {

所以我有一个控制器,可以容纳大约10个动作。每个动作/视图只包含一个图像。我试图做的是为每个操作向URL发送一个参数(该参数对每个操作执行相同的操作)


我是否可以在控制器中的任何操作中执行操作,这样我就不必指定10个不同的路由?

如果我正确理解您的评论,您希望使路由看起来像:

        routes.MapRoute("MyRoute", "{controller}/{action}/{myparameter}",
            new 
            { 
                controller = "My",
                action = "CanIMakeThisBeAnything", 
                myparameter = UrlParameter.Optional
            });
以及您的行为,如:

因此,如果有人导航到您的webapp/My/yes,您可以将其设置为anythis/abc123,那么它将调用上述操作,myparameter将等于“abc123”


如果有人导航到您的webapp,那么它将调用控制器“MyController”(也在路由的默认设置中指定)上名为“CanIMakeThisBeAnything”(在路由的默认设置中指定)的操作,myparameter将等于null(因为它没有默认值,并且是可选的).

你的行动是什么样子的?我一点也不清楚你为什么认为你需要10条不同的路线。您在上面的代码中指定的唯一操作是默认操作。您是否收到某种错误?从你的问题来看,我同意@James R…看起来你不需要对路线做任何事情。是的,听起来你只是对路线的运作方式感到困惑。
action
参数只是在未指定任何内容的情况下的默认值(即
/MyController/
。如果您将用户发送到URL
/MyController/Foo/
,它将点击
Foo
操作,不管您为
action
设置了什么,“操作参数只是默认值”这就是我的错误所在。我认为操作必须是控制器的特定操作。这更有意义。基本上,对于每个操作,我返回一个具有不同图像的视图。这看起来像“MyController/action”。对于每个操作,我需要另一个参数(这是正确的短语吗?)在我可以抓取并在代码中使用的URL中…即“MyController/action/parameter”@chrispratt这是一个令人困惑的答案,我认为它不能清楚地回答提问者的问题。我对这个答案的理解是,“不,我不理解你的问题。”提问者问的问题是“是否必须指定路线映射的‘操作’部分?”-这个问题没有明确回答这个问题。
        routes.MapRoute("MyRoute", "{controller}/{action}/{myparameter}",
            new 
            { 
                controller = "My",
                action = "CanIMakeThisBeAnything", 
                myparameter = UrlParameter.Optional
            });
public ActionResult YesYouCanMakeThisAnything(string myparameter)
{
    ...
    return View(...);
}