我正在学习如何在MVC中进行路由。在我看来,路由API只解决了一半的问题。我可以很容易地看到如何将传入的URL映射到控制器动作和参数。但是,对我来说,如何在我的页面的源代码中生成这些路由URL并不明显。
例如,在我的一个视图中,我使用此代码来获取路径URL:
<a class="listingResult" href="@Url.RouteUrl("ListingSEO", new { id = Model.Listing.ID, seoName = ListingController.SeoName(Model.Listing.Title) })">
这对我来说似乎是一种糟糕的编码习惯,原因如下:
在生成路径网址时如何观察良好的编码标准?替代方案似乎是在控制器中放置静态函数来生成路由,这至少可以解决问题#1和#3。如果我和你一起工作并且你看到了上面的代码,你会有多不开心?
答案 0 :(得分:1)
我的建议:
答案 1 :(得分:1)
使用命名路由的目的之一是抽象控制器/操作。您指定的路线不应该真正改变。最多,您只需更改他们所点击的控制器/操作,但这会在幕后无缝地发生,因为您正在使用命名路径。
您的视图需要知道控制器,因为您已经添加了对它的依赖。出于多种原因,这很糟糕。您可以通过多种不同的方式处理这种情况,这种方式不需要依赖控制器,具体取决于您在此处实际执行的操作,但至少应该使用实用程序类,所以至少它不是特定于控制器的。
路线参数故意不是强类型的,因为路线设计灵活。您可以将任何您想要的内容传递给操作,无论是否有参数来捕获它(您可以使用类似Request
之类的东西来获取它而不需要参数)。