Asp.net mvc 我可以在ASP.net MVC中将路由参数约束为特定类型吗?

Asp.net mvc 我可以在ASP.net MVC中将路由参数约束为特定类型吗?,asp.net-mvc,routing,constraints,mvccontrib,Asp.net Mvc,Routing,Constraints,Mvccontrib,我有以下路线: routes.MapRoute( "Search", // Route name "Search/{affiliateId}", // URL with parameters new { controller = "Syndication", action = "Search" } // Param

我有以下路线:

routes.MapRoute(
    "Search",                                               // Route name
    "Search/{affiliateId}",                                 // URL with parameters
    new { controller = "Syndication", action = "Search" }   // Parameter defaults
);

有没有办法确保“affiliateId”是有效的Guid?我正在我的站点的其他地方使用MVCContrib,我很高兴它提供了一种实现这种约束的方法。。。。我只是不知道那是什么

您可以编写正则表达式约束:

routes.MapRoute(
    "Search",                                               // Route name
    "Search/{affiliateId}",                                 // URL with parameters
    new { controller = "Syndication", action = "Search" },   // Parameter defaults
    new { affiliateId = "SOME REGEX TO TEST GUID FORMAT" } // constraints
);

您可以编写正则表达式约束:

routes.MapRoute(
    "Search",                                               // Route name
    "Search/{affiliateId}",                                 // URL with parameters
    new { controller = "Syndication", action = "Search" },   // Parameter defaults
    new { affiliateId = "SOME REGEX TO TEST GUID FORMAT" } // constraints
);


我从没听说过这个。我担心,如果您在一个操作方法中错误地使用了
affiliateId
参数的错误类型,会引起一些混乱。

我从未听说过这种情况。如果您在一个操作方法中错误地使用了
affiliateId
参数的错误类型,我担心会引起一些混乱。

Hmm,谢谢。保罗·苏亚特:如果
affiliateId
只是一个数字参数,那么你的正则表达式就是
“\d”
,你就可以开始了。为什么您认为它很脆弱?它是一个guid,所以正则表达式比“\d”更复杂。不管怎样,谢谢。嗯,对我来说并不复杂。谷歌的第一个结果:嗯,谢谢。保罗·苏亚特:如果
affiliateId
只是一个数字参数,那么你的正则表达式就是
“\d”
,你就可以开始了。为什么您认为它很脆弱?它是一个guid,所以正则表达式比“\d”更复杂。不管怎样,谢谢。嗯,对我来说并不复杂。google中的第一个结果:在匹配路由之前,您想确保affiliateId是Guid,对吗?或者,在执行搜索操作之前,是否要确保affiliateId为Guid?如果affiliateId为Guid,我只希望路由匹配,是的。如果不是guid,则不应执行搜索操作。谢谢。所以在匹配路由之前,您要确保affiliateId是Guid,对吗?或者,在执行搜索操作之前,是否要确保affiliateId为Guid?如果affiliateId为Guid,我只希望路由匹配,是的。如果不是guid,则不应执行搜索操作。谢谢。我认为把路线限制在某个结构上并不少见。正如另一张海报所说,我可以使用正则表达式,这是一种已知且有文档记录的方法,可以确保只有当url为某种格式时,路由才会匹配。我是一个很好的人,所以第一:)好吧,在看到你上面的澄清之后,我相信我误解了你。您是否希望创建两条路径,如
Search\{affiliateId}
Search\{query}
?如果是这样的话,我认为regex路线是最好的。或者,您的搜索操作可以接受一个字符串参数,然后调用相应的代码来搜索vs附属公司。我认为将路由约束到特定结构并不少见。正如另一张海报所说,我可以使用正则表达式,这是一种已知且有文档记录的方法,可以确保只有当url为某种格式时,路由才会匹配。我是一个很好的人,所以第一:)好吧,在看到你上面的澄清之后,我相信我误解了你。您是否希望创建两条路径,如
Search\{affiliateId}
Search\{query}
?如果是这样的话,我认为regex路线是最好的。或者,您的搜索操作可以接受字符串参数,然后调用相应的代码来搜索vs关联公司。