在视图或控制器外部的ASP.NET MVC中生成URL

时间:2014-03-11 06:52:38

标签: c# asp.net-mvc

我在CodeProject上关注文章"Simulate a Windows Service using ASP.NET to run scheduled jobs",在“过期后再次将项目存储在缓存中”部分中,我需要点击我的应用程序页面。

我想用Asp.Net MVC UrlHelper生成它,而不是硬编写url,但是它需要一些我在此上下文中无法访问的实例,因为它不在Controller或View中

可能还是有其他解决方案?

编辑:

悲伤地HttpContext.Current is not accessible in CacheItemRemovedCallBack。 因此,唯一的解决方案似乎是在Application_Start方法中存储所需的值(Url.Host),以便稍后构建完整的URL。

3 个答案:

答案 0 :(得分:6)

您可以将Url.Action方法与以下参数一起使用:

@Url.Action("Index", "Home", routeValues, Request.Url.Scheme)

new UrlHelper(HttpContext.Request.RequestContext).Action("Index", "Home", routeValues, Request.Url.Scheme)

答案 1 :(得分:2)

您可以创建自己的UrlHelper实例。 为此,您需要访问当前的http请求。 这可以使用HttpContext的静态实例来实现:HttpContext.Current:

new UrlHelper(HttpContext.Current.Request.RequestContext).Action("action");

答案 2 :(得分:0)

[https://www.codemag.com/Article/1312081/Rendering-ASP.NET-MVC-Razor-Views-to-String][1]

检查此内容以获取有关如何执行此操作的完整说明