加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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);
                    }
                }
            }
        }
    }
}

希望这可以帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读