C# 无论如何,在MVC的RouteConfig中有一个动作,而不必指定一个特定的动作?
所以我有一个控制器,可以容纳大约10个动作。每个动作/视图只包含一个图像。我试图做的是为每个操作向URL发送一个参数(该参数对每个操作执行相同的操作)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个不同的路由?如果我正确理解您的评论,您希望使路由看起来像:
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(...);
}