我有一个用ASP.NET MVC 4.5编写的网站
我有一个名为Products
的控制器,其中包含每个产品的视图。
我希望我们的某个产品在用户访问www.website.com/ProductName时重定向到www.website.com/Products/ProductName。
我现在正在考虑这两种方法:
ProductName
的控制器并使用RedirectToRoute()
RouteConfig.cs
文件并添加一个。您最好的方法是什么?为什么?还有另一个吗?
答案 0 :(得分:1)
我和@rjovic在一起,肯定会采用第二种方法并添加一条新路线。
第一种方法需要为每种产品创建一个新的控制器,这似乎违背了良好的设计原则;为什么有多个产品的单独类表现方式相同?路由专为这种情况而设计:将用户友好的URL方案映射到应用程序逻辑中的相应处理程序。
在这种情况下,有两种可能的方法来设计路线:
答案 1 :(得分:0)
看起来你在这里所做的一切都是重定向。您可能希望查看使用IIS Url重写模块并创建重定向规则,例如
<rewrite>
<rules>
<rule name="Redirect to Products/ProductName">
<match url="^ProductName" />
<action type="Redirect" url="Products/ProductName" />
</rule>
</rules>
</rewrite>
有关http://learn.iis.net/page.aspx/461/creating-rewrite-rules-for-the-url-rewrite-module/
的大量信息答案 2 :(得分:0)
www.website.com/products/productname
会更加RESTful。将您的产品放在网站的根级别只会在您想要添加网站的其他部分时遇到麻烦。即www.website.com/about-us - 是关于我们的产品,还是它自己的页面?
创建一个ProductsController并使用一个默认操作,该操作采用一个产品名称的字符串。