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

时间:2015-02-04 19:55:27

标签: asp.net-mvc razor

我有一个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 个答案:

答案 0 :(得分:4)

通常,您会使用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>");

无论您从何处调用图像或如何使用root访问视图,图像都将始终解析。