我想基于动作/控制器名称+路线值创建一个Url。
我知道可以使用UrlHelper.Action
,但我以异步方式运行该方法,因此HttpContext.Current
始终为null
。
还有其他用于构建网址吗?
我已经看过几个例子,但我需要知道我不知道域名(hostname或application_name)的情况,并且只需要基于Action + Controller +构建URL路线值。
由于我还没有创建任何内容,因此我没有任何代码可供展示。
答案 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 ...
这只是一个想法。真正的代码必须更安全,以避免空引用,更复杂的检查路由约束,替换模式等。