asp.net-mvc-3 – 如何确保Asp.net MVC项目中不同控制器之间的UR
发布时间:2020-12-16 09:35:44 所属栏目:asp.Net 来源:网络整理
导读:C#中的接口非常适合确保我的控制器的操作方法采用相同的数字,数据类型和参数顺序.不幸的是,这无助于保持路由机制生成的URL一致.如何确保参数名称相同? 例如: 我该如何确保 sportswear/products 和 carsandtrucks/products 两者都取参数productId? 我想尝
C#中的接口非常适合确保我的控制器的操作方法采用相同的数字,数据类型和参数顺序.不幸的是,这无助于保持路由机制生成的URL一致.如何确保参数名称相同?
例如: 我该如何确保 sportswear/products 和 carsandtrucks/products 两者都取参数productId? 我想尝试在global.asax.cs中避免很多路由,因为我觉得它们不直观,但我对创意持开放态度. 解决方法
我建议最好的选择是单元测试,它可以找到控制器接口的所有实现,并确保实现参数名称与接口上的名称相匹配.
所以像 public interface IController { ActionResult GetProducts(string productId); } [TestFixture] public class IControllerTest { [Test] public void EnsureImplementationsUseCorrectParameterNames() { // Assuming all required assemblies have been loaded var implementations = AppDomain.CurrentDomain.GetAssemblies().SelectMany(assembly => assembly.GetTypes().Where(type => typeof(IController).IsAssignableFrom(type))); var interfaceMethods = typeof(IController).GetMethods().ToList(); foreach (var implementation in implementations) { var methodPairs = interfaceMethods.Join(implementation.GetMethods(),mi => mi.ToString(),(inner,outer) => new { InterfaceMethod = inner,ImplementationMethod = outer }); foreach (var methodPair in methodPairs) { using (var interfaceParameters = methodPair.InterfaceMethod.GetParameters().Cast<ParameterInfo>().GetEnumerator()) using (var implementationParameters = methodPair.ImplementationMethod.GetParameters().Cast<ParameterInfo>().GetEnumerator()) { while (interfaceParameters.MoveNext() && implementationParameters.MoveNext()) { Assert.AreEqual(interfaceParameters.Current.Name,implementationParameters.Current.Name); } } } } } } 希望这可以帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – ASP.NET MVC 4 – 301重定向RouteConfig.cs
- c#获取当前应用程序所在路径
- asp.net-web-api – ASP.NET核心Web API:为什么在Get请求中
- asp.net-mvc-3 – ASP.NET Webforms中的成员资格提供程序与
- 在ASP.NET MVC(视图)中包含WebForms?
- 排序 – sortdir没有在MVC 3 WebGird中使用枚举数据类型
- 经典asp和IIS应用程序池之间的关系是什么?
- 使用Asp.net Mvc3 Razor视图方式扩展JQuery UI Widgets方法
- asp.net-mvc – ASP.NET MVC中的Razor页面生命周期
- asp.net-mvc-3 – 允许没有找到Html属性[AllowHtml]
推荐文章
站长推荐
- entity-framework – Entityframework Mapping问
- asp.net-core – 我为什么要选择带有.Net核心的A
- ASP.net Core中正确的标记用法是什么? TagHelpe
- asp.net – 在IIS 7.5上使用传出异步Web请求时的
- 选择完成后和提交上传之前的asp.net FileUpload事
- model-view-controller – 有没有办法在ASP.MVC
- asp.net-mvc-4 – GAC问题不能在IIS上托管应用程
- asp.net-web-api – 如何在Azure Service Fabric
- asp.net-mvc – Visual Studio 2010未将.CSHTML(
- asp.net-mvc-3 – 实体框架代码优先:“ObjectSt
热点阅读