路由的要求不是空参数到控制器

我沃尔德样,来图的http://本地主机/ GUID的推移,这里ResellerController和火灾Index该控制器的作用,只有当Guid-goes-here 不是空的GUID。 我的路由表看起来如下:

public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( "Reseller", "{id}", new { controller = "Reseller", action = "Index", id = Guid.Empty } //We can mark parameters as UrlParameter.Optional, but how to make it required? ); routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults ); }

和我的行动看起来像这样:

public ActionResult Index(Guid id) { // do some stuff here }

但是,应用程序启动后(以http://本地主机),它重定向我ResellerController空GUID作为id参数。

--------------解决方案-------------

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

routes.MapRoute(
"Reseller",
"{id}",
new { controller = "Reseller", action = "Index", id = UrlParameter.Optional },
new { id = @"^(\{{0,1}([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}\}{0,1})$" }
);

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

或者如果你想要一个更强大的约束比一些神秘的正则表达式:

public class GuidConstraint : IRouteConstraint
{
public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
{
var value = values[parameterName] as string;
Guid guid;
if (!string.IsNullOrEmpty(value) && Guid.TryParse(value, out guid))
{
return true;
}
return false;
}
}

接着:

routes.MapRoute(
"Reseller",
"{id}",
new { controller = "Reseller", action = "Index", id = UrlParameter.Optional },
new { id = new GuidConstraint() }
);

您需要包括在路由定义的约束。 对这个帖子一看:http://blogs.microsoft.co.il/blogs/bursteg/archive/2009/01/11/asp-net-mvc-route-constraints.aspx

分类:asp.net的MVC 时间:2012-01-01 人气:0
分享到:

相关文章

  • MVC与ASP.NET使用Ajax 3.5 2012-02-17

    我已经将我的MVC appilcation asp.net应用程序的代码. 我按照这些步骤做了整合. 创建新的MVC应用程序. asp.net应用程序的代码复制到该MVC应用程序. 有些使用Ajax 3.5我的网页没有工作. 像我有使用HoverMenuexternder和AJAX 3.5 modalpopupExtender但它不会整合后的工作. --------------解决方案------------- 这听起来像您使用的AjaxControlToolkit. 这只能在WebForms的

  • 提问关于ASP.NET MVC与ASP.NET的Web栌 2012-02-19

    我是一个初级程序员,我不明白MVC的概念! 我的编码方法分隔条件我的应用程序设计分为3层: 表示层业务层数据访问层 我觉得很实用的一个初级开发者,或者至少给我,所以我真的不明白MVC的一点,因为我相信MVC只是试图从逻辑UI中分离出来. 对? 我很困惑,你可以请提供任何意见! 任何帮助将不胜感激... 我决定让这本书帮助我对码设计一个更好的主意: http://www.amazon.com/Professional-ASP-NET-Design-Patterns-Millett/dp/04702

  • 是MVC编码asp.net应用程序的最佳方法是什么? 2012-04-22

    更新:我知道有尽一切没有最好的方法. 对不起,我不是说马上. 在数据访问教程的背景下,如果你必须做他该教程做这个项目,你会做什么,他做了或将使用使用MVC,如果你不得不选择其中之一吗? 更新:是不是这里找到教程MVC编程asp.net应用程序的更合适的方式,: http://www.asp.net/Learn/data-access/ 原版的: 我问,因为我最初了解MVC Java应用程序,然后像ROR和Django的. 这些其他项目和企业说话好像MVC已经存在了很长一段时间,从我发现它了. 那

  • ninject MVC和asp.net MVC2不工作对VWD 2010快递 2012-05-07

    这有什么错ninject MVC和asp.net MVC2? 我试图设置VWD 2010快递一个简单的项目,但它似乎ninject控制器工厂无法正确地创建控制器,这是我的代码 public class MvcApplication : Ninject.Web.Mvc.NinjectHttpApplication { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.

  • 为什么微软选择MVC构建ASP.net MVC? 2012-05-12

    我知道什么是ASP.net,我知道什么是MVC和一些其他的设计模式,我的问题是,为什么微软选择这个设计模式? 为什么不ASP.net 3tiers或ASP.net AOP ...等 它是易于编程,功能更强大的网站建设? 换句话说,有什么用MVC,而不是其他的设计模式与ASP.net的优势是什么? --------------解决方案------------- MVC是一个强有力的图案,并已被证明是非常流行的其它发展的社区,包括但不限于:Ruby on Rails的. 维基百科的MVC Web框架

  • Windows身份验证 - MVC 2 ASP.Net 2012-05-16

    有动我的应用程序切换到Windows身份验证的实际问题. 在SQL的错误信息是与创建的ASPNETDB.MDF文件的问题. 我想知道的连接字符串是否在web.config中的错误或其他元素 我在IIS的Windows身份验证设置. web.config中: <?xml version="1.0"?> <!-- For more information on how to configure your ASP.NET application, please visit

  • ASP.NET成员角色列表中的MVC 2012-07-03

    我想创建并显示在我的MVC应用ASP.NET成员的角色列表. 用户将选择角色,它会使用实体框架被保存在数据库中. 任何帮助实现这一点? --------------解决方案------------- 这个问题是很模糊的,看起来像你要求的一切,就像一个准备使用的解决方案. 对于MVC和MS实体框架的解决方案,我建议你读到这里我的答案的分层:MVC3和Entity Framework 为引进和快速入门的ASP.NET MVC我建议你去这里:http://www.asp.net/mvc,并按照这些介绍

  • ASP.NET MVC与ASP.NET 4.0 2012-07-25

    我看着这个网络直播最近,我得到这个意义上,有很多来自ASP.NET MVC的"很酷的东西"是越来越拉回ASP.NET框架. 目前,我设置了地面工作在我的公司使用ASP.NET MVC的一个项目,但看着这之后,我开始怀疑,如果这是正确的选择,以及是否会理所当然我等待ASP .NET 4.0. 我知道ASP.NET MVC 2.0正逐渐接近实际的释放. 如果高可测性 , 松散耦合 ,并具有完全控制我们的HTML都是当务之急,应该让我选择,ASP.NET 4.0和ASP.NET MVC? -

  • ASP.NET MVC =经典ASP与.NET类库。 真? 2012-11-05

    该博文与我们的资深开发人员在工作1认为,网络的发展已经兜了一圈与ASP.net MVC. 它不是一个真正的关于VB脚本VS VB9 / 10或什么是最新的问题. 除了路由引擎,辅助类和方法. 什么是一些强有力的论据,你可以说 ASP.net MVC!=经典ASP + .NET基础类库 --------------解决方案------------- 在ASP中的"查看"接收请求. 在ASP.NET-MVC中的控制器接收的请求,随后它可从许多不同的意见选择创建的响应. 请求从响应处理的处理

  • ASP.NET MVC Url.Action增加了当前路由值生成的URL 2013-01-29

    我已经看到了这个问题,几次在这里SO但他们没有任何可以接受的答案: ASP.NET MVC @ Url.Action包括当前的路由数据 ASP.NET MVC隐式添加路由值 基本上我有控制器称为集团的操作方法,它具有接收任何参数,并显示元素的列表,并接收ID和细节显示该组另一个超载. 如果我做这样的事情: Url.Action("Group", "Groups"); 从网站(/)的主页它返回一个像这样的网址: "mysite.com/Groups/Grou

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.208 (s). 10 q(s)