c# - 在 ASP.NET MVC 3 中生成独立于 Controller 的 URL

标签 c# asp.net-mvc-3 urlhelper

我有一个 mvc 3 应用程序,其后台线程检查某些数据库项的状态。当它发现过期的项目时,它会发送一封电子邮件。在电子邮件中,我想包含要调用以查看状态的操作的 url。如果这是从 Controller 完成的,我会使用 UrlHelper,例如:

string body_url = "For more details see: " + Url.Action("Details", "MyOrder", new { OrderId = order.OrderId }, Constants.HttpProtocol);

但是,我不在 Controller 中,也不是从 Controller 调用我的方法,它是在应用程序启动时启动的。有没有一种方法可以生成有效的 UrlHelper,或者,如果没有,则可以生成有效的 URL,而无需诉诸于硬编码路径,当独立于 Controller 时?

最佳答案

这是理论上的……引用 msdnso ...在后台线程上让事情变得有趣:)

var request = new HttpRequest("/", "http://example.com", ""); //hopefully you can hardcode this or pull from config?
var response = new HttpResponse(new StringWriter());
var httpContext = new HttpContext(request, response);

var httpContextBase = new HttpContextWrapper(httpContext);
var routeData = new RouteData();
var requestContext = new RequestContext(httpContextBase, routeData);

var urlHelper = new UrlHelper(requestContext);
var url = urlHelper.Action("ActionName", "ControllerName");

关于c# - 在 ASP.NET MVC 3 中生成独立于 Controller 的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14844980/

相关文章:

c# - Xamarin.Android wav 到 m4a

c# - 可移植类库中的操作如何超时?

asp.net-mvc-3 - 制作一个Html.TextBoxFor看起来像一个标签

c# - 如何将值从 Controller 方法传递给另一个?

c# - 通过代理连接到 IRC (.NET)

javascript - 尝试使用 Knockout ViewModel 实现 SignalR

asp.net - 如何为 ASP.NET MVC 操作生成 URL,包括主机名和端口?

c# - UrlHelper.Action 包含不需要的附加参数

asp.net-mvc - 从 Controller 内部使用 Html.ActionLink 和 Url.Action(...)

c# - UrlHelper.Action : would like to generate a link that ends with '#something'