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关联公司。