0

我有一个 MVC4 项目,并且我有一个外部项目,它会发送引用站点区域的电子邮件。

我不想将 url 硬编码到电子邮件中,而是希望能够确保我从路由中获得规范的 url。我可以参考 MVC 项目,这意味着我相信我应该能够获得它拥有的任何编译时间信息(包括路由和事物)。

我已经设法创建了一个RouteCollection并用我的路线填充它,但我现在正在努力如何查询这个集合。我找到的唯一方法是RouteUrl方法,UrlHelper但这需要一个UrlHelper我无法创建的适当路由数据。我也希望有更好的方法可用于查询路由集合。

基本上我有这条路线:

routes.MapRoute
(
    "ShowBlog",
    "blog/{shortcode}/{slug}",
    new { controller = "Blog", action = "ShowBlog", shortcode = "", slug = "" } 
);

我想要一些这样GetUrl("ShowBlog", new {shortcode = "foo", slug="bar"})的代码会返回blog/foo/bar

那么我该怎么做呢?

4

1 回答 1

1

如果您可以UrlHelper从测试项目中连接 a,则可以从任何其他外部项目中进行连接。但是,您需要像Application_Start在 MVC 项目中一样在外部项目中注册路由。

您还需要模拟 anHttpContextBase和 a RequestContext,这意味着您的外部项目至少需要知道安装 MVC 项目的应用程序路径。如果您的外部项目可以像测试项目一样使用模拟库,这将更容易。有没有这种可能?

如果是这样,这里是一个如何使用的链接Moq。您不需要控制器,但您可以为您的HttpContextRequestContextUrlHelper.

于 2013-11-06T13:18:51.737 回答