如何在没有UrlHelper的情况下创建网址?

时间:2015-07-28 17:36:06

标签: c# asp.net-mvc

我想基于动作/控制器名称+路线值创建一个Url。

我知道可以使用UrlHelper.Action,但我以异步方式运行该方法,因此HttpContext.Current始终为null

还有其他用于构建网址吗?

我已经看过几个例子,但我需要知道我不知道域名(hostname或application_name)的情况,并且只需要基于Action + Controller +构建URL路线值。

由于我还没有创建任何内容,因此我没有任何代码可供展示。

2 个答案:

答案 0 :(得分:0)

您可以在调用异步方法之前创建URL的基础(此时您有上下文),然后在执行完该方法后填充其余值。

答案 1 :(得分:0)

尝试运行RouteTable.Routes。找到最合适的并形成网址。 像这样的东西

foreach (var rr in RouteTable.Routes){
  var r=(Route)rr;
  if (r.Defaults["controller"].ToString()=="myController" && ...){
    return r.Url+"?"+routeValue1.Key+"="+routeValue1.Value ...

这只是一个想法。真正的代码必须更安全,以避免空引用,更复杂的检查路由约束,替换模式等。