ASP.NET MVC 3 RC2错误?

时间:2010-12-23 09:25:59

标签: c# .net asp.net-mvc asp.net-mvc-3

到目前为止,我一直在使用ASP.NET MVC 3 BETA。在RC2版本更新之前,一切正常。我当然读过ScottGu's article about RC2

我的问题如下。基本上我有2个控制器:

   public class DynamicPageController : Controller
   {          
      public ActionResult Redirect(string resource, int? pageNumber, int? id)
      {       
      }
   }

   public class SystemController : Controller
   {
      public ActionResult Index()
      {
      }
   }

在Globals.asax中我有这样的路线:

   public static void RegisterRoutes(RouteCollection routes)
   {
         routes.MapRoute(
            "SystemRoute",
            "System/{action}",
            new { controller = "System", action = "Index" }
            );

         routes.MapRoute(
            "PageRoute",
            "{resource}/{id}/{pageNumber}",
            new { controller = "DynamicPage", action = "Redirect", resource = UrlParameter.Optional, pageNumber = UrlParameter.Optional, id = UrlParameter.Optional }
            );
   }

在代码中,我创建了简单的链接:

System.Web.Mvc.UrlHelper u = new System.Web.Mvc.UrlHelper(context);
string url = u.Action("Index", "System");

,两个版本(BETA和RC2)中的网址都是“/ my_app / System”

但是下面的代码(语法与上面的相同,只有控制器和动作名称不同):

string url = u.Action("Redirect", "DynamicPage", new RouteValueDictionary(new { resource = "Home" }));

给出在RC2中为空的url。它应该是(事实上在BETA中)“/ my_app / Home”

为什么?这是一个错误吗?如何为“ DynamicPage ”控制器创建网址?

此致

BTW:我现在可以从哪里下载ASP.NET MVC BETA版本以及ASP.NET Web Pages 1.0安装程序?自RC2发布以来,我发现上述2个安装程序时遇到了问题。通常我会升级我的代码,但上面描述的这个问题让我在BETA呆了一段时间,因为我现在没有时间迁移和测试所有内容。

更新

我用于这种情况的解决方案,当我有一个接一个存在两个可选参数时,就是在现有的 PageRoute 路由之前添加新的 PageRouteCore 路由:

routes.MapRoute(
            "PageRouteCore",
            "{resource}",
            new {controller = "DynamicPage", action = "Redirect"}
            );

这基本上是相同的路线但没有可选参数。现在,url创建的行为就像我预期的那样。

1 个答案:

答案 0 :(得分:4)