Asp.net mvc ASP.NET MVC重定向操作是否为默认值?

Asp.net mvc ASP.NET MVC重定向操作是否为默认值?,asp.net-mvc,Asp.net Mvc,我的控制器上有一个名为“dosomething”的操作(控制器名为“makemagic”),它接受一个可为null的int,然后返回视图“dosomething.aspx”。至少这是我想做的。似乎不管我被路由到Default()视图 有一个/Views/makemagic/dosomething.aspx文件,其中包含Inherits System.Web.Mvc.ViewPage 我需要对我的路线做些什么吗?我的global.aspx.cs文件中只有“stock”默认路由 public sta

我的控制器上有一个名为“dosomething”的操作(控制器名为“makemagic”),它接受一个可为null的int,然后返回视图“dosomething.aspx”。至少这是我想做的。似乎不管我被路由到Default()视图

有一个/Views/makemagic/dosomething.aspx文件,其中包含Inherits System.Web.Mvc.ViewPage

我需要对我的路线做些什么吗?我的global.aspx.cs文件中只有“stock”默认路由

public static void RegisterRoutes(RouteCollection routes)
{
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

      routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
      );

}
我通过a href调用该操作,就像在另一个页面中这样

<a href="/makemagic/dosomething/25">Click Me!</a>


真让我发疯。关于如何解决这个问题有什么建议吗?我试图调试路由定义上的中断,但似乎没有像预期的那样发生中断。

更改它,使参数不可为null,使其与默认路由匹配,或者将名称更改为id以外的名称,并将其作为查询参数提供。后者的一个例子是:

public ActionResult dosomething(int? foo)
{       
  var model = // business logic here to fetch model from DB
  return View("dosomething", model);
}

<a href="/makemagic/dosomething?foo=25">Click me</a>
public ActionResult dosomething(int?foo)
{       
var model=//从数据库获取模型的业务逻辑
返回视图(“剂量测量”,模型);
}
它将与默认路由实现一起工作。或者,您可以做一些将其与默认路由区分开来的事情,然后您将能够为其创建一个路由,而不必使用查询参数

routes.MapRoute(
        "Default",                                     // Route name
        "{controller}/{action}/foo/{id}",              // URL with parameters
        new { controller = "makemagic", action = "dosomething", id = "" }  // Parameter defaults
);

<a href="/makemagic/dosomething/foo/25">Click Me!</a>
routes.MapRoute(
“默认值”,//路由名称
“{controller}/{action}/foo/{id}”,//带参数的URL
新建{controller=“makemagic”,action=“dosomething”,id=”“}//参数默认值
);

谢谢您的回复。我想我只是错过了一些东西:像这样的行动;ActionResult dosomething(int foo){}尝试了此操作,失败;试过了,失败了;一直让我参加/makemagic/details活动!?!?!如果我必须设置一条新路线,这似乎很奇怪,这肯定是常见的情况吗?是吗?即使尝试过,也失败了。Grrrr。如果我复制URL并将其粘贴到一个新窗口中,它会工作,但从页面内部看,它似乎会“丢失”。当我粘贴它时,它在浏览器中工作;但当作为一个href,它似乎去;想法?啊!我想出来了。我有一个jQuery Colorbox()方法来蒙骗URL。现在我得去打我自己了。。。
routes.MapRoute(
        "Default",                                     // Route name
        "{controller}/{action}/foo/{id}",              // URL with parameters
        new { controller = "makemagic", action = "dosomething", id = "" }  // Parameter defaults
);

<a href="/makemagic/dosomething/foo/25">Click Me!</a>