1
1
善良的样子
你的
工作,但是-不管怎样。
正如你可能已经知道的,秩序很重要。 www.site.com/shops/shopname/productName/addComment=>
www.site.com/shops/shopname/productName/aspecificCommenthere=>
www.site.com/shops/shopname/productName/addproduct=>
www.site.com/shops/shopname/productName/=gt;
www.site.com/shops/shopname=>
网址:www.site.com/shops( 铌 :此路由为“全局”,对于每个控制器)=>
也许这可以优化或者更糟-这是错误的,但它应该给你一些更好的理解。 记住不要根据控制器操作来命名商店/控制器/注释。这是这种路由方法的一个问题。 我希望您注意到,我将创建3个不同的控制器(什么可能是一个好的决定,也可能不是一个好的决定——这是基于控制器逻辑的可预期的权重和复杂性)。 另一个技巧-阅读模型绑定。使用自定义绑定,可以将字符串参数(实体名)替换为实际的、已经组装的对象。对于这个特殊的情况,也许这是不值得的,但是当面对ASP.NET MVC时,模型绑定肯定是第二重要也是最难掌握的事情。
我撒了谎,我不同意这样做,因为我更喜欢在操作上直接使用属性指定特定于控制器的路由(忽略了这一点,因为它看起来更多
路由就像正则表达式。有时它只是“咔嗒”一声,看起来自然而简单。 已回答第二个问题作为对您问题的评论。:) |
2
0
我会花点时间研究MVC中的路由机制。这是为应用程序应该接收的URL设置格式的地方。您提到的所有事情都是可能的…您只需要相应地构造您的路由定义。只要能够接受实体的名称而不是ID,就可以很容易地通过构造路由来接受名称,并将操作方法上的签名更改为接受字符串而不是ints来做到这一点。 我不知道视图模型应该位于哪里的官方立场。这取决于您自己,并且取决于您正在实现的ORM方法。我正在使用linq-to-sql,并且非常享受它。我将LINQ to SQL模型保存在我的模型文件夹中。我喜欢将视图模型保存在“我的模型”文件夹下的视图子文件夹中。我还有一个域子文件夹来保存我的实体的部分模型,以防我想实现计算字段或设置记录的初始值。 |