在ASP.NET MVC视图中获取相对URL

4

我有一个ASP.NET MVC应用程序。在视图中,我使用Razor。由于我的IT部门,该应用程序位于相对根目录下,例如http://ourdomain.com/appRoot而不是在域的顶部http://ourdomain.com。这里的另一个挑战是,appRoot不是静态的。它会实际变化。因此,我需要通过Razor获取相对根目录的名称。当前,我有以下内容:

<input id="hiddenElem" type="hidden" value="12345" />
<script type='text/javascript'>
  function doThis() {
    var id = $('#hiddenElem').val();
    var nextUrl = '@(Request.?)' + '/path/' + id;
    alert(nextUrl);
  }
</script>

当调用doThis时,我希望看到警告窗口显示/appRoot/path/12345。为了获得相对根路径,我应该在与nextUrl相关的Razor块中放置什么内容?
1个回答

6
一般情况下,您会使用“mvc”路由函数Url.Action()
function doThis() {
    var id = $('#hiddenElem').val();
    var nextUrl = '@Url.Action("MyAction","MyController")' + '/path/' + id;
    alert(nextUrl);
  }

Html.ResolveUrl() 函数用于解析相对路径,但是它没有考虑路由。

此外,使用 Url.Content() 函数可能会产生您所期望的结果。例如,在下面的代码片段中:

.Template("<img src='"+ @Url.Content("~/Images/Icons/16/STATE.png")+"'/> <mark>${data.StateName }</mark>");

无论您从哪里调用它或者以何种方式访问根视图中的视图,该图像始终会被解析。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接