Javascript中的Url帮助程序ASP.NET MVC

Javascript中的Url帮助程序ASP.NET MVC,javascript,asp.net-mvc,json,Javascript,Asp.net Mvc,Json,我正在编写一个js脚本,它读取一个包含我的web应用程序的所有导航链接的JSON文件。 菜单树如下所示: 1 - DASHBOARD - dashboard 2 - SETTINGS 2.1 - GENERAL - settings/general 2.2 - LAYOUT - settings/layout 3 - DATABASE 3.1 - QUERY 3.1.2 - EDITOR - database/query/editor 3.1.

我正在编写一个js脚本,它读取一个包含我的web应用程序的所有导航链接的JSON文件。 菜单树如下所示:

1 - DASHBOARD - dashboard
2 - SETTINGS
    2.1 - GENERAL - settings/general
    2.2 - LAYOUT - settings/layout
3 - DATABASE
    3.1 - QUERY
       3.1.2 - EDITOR - database/query/editor
       3.1.3 - TEST - database/query/test
男子ù是3级嵌套链接

我如何在JSON文件中写入链接,以避免在“
仪表板”中出现“
未找到”
,并希望转到
设置>常规


我不想使用绝对路径,我的webapp将在虚拟目录中运行。

您应该使用
Url.Content(“~/”
)来获取应用程序的绝对Url。例如,如果您在名为
MyApp
的虚拟目录中运行应用程序,并且在
About/Me
中有一个页面,则可以使用:

string url = Url.Content("~/About/Me"); // this will return '/MyApp/About/Me'

如果可以,我建议修改JSON响应,以包含应用程序承载的基本路径

string basePath = string.Format("{0}://{1}{2}", Request.Url.Scheme, Request.Url.Authority, Url.Content("~"));
例如:
basePath+“database/query/editor”
而不是
database/query/editor

如果无法修改JSON响应,则可以从MVC的JavaScript变量中获取应用程序承载的基本路径

\u Layout.cshtml
文件或每次加载应用程序时加载的任何文件中,在JS变量中设置应用程序运行的基本路径:

<script type="text/javascript">
    window.applicationBaseUrl = @Html.Raw(HttpUtility.JavaScriptStringEncode(Url.Content("~/"), true));
</script>

window.applicationBaseUrl=@Html.Raw(HttpUtility.JavaScriptStringEncode(Url.Content(“~/”),true));
现在,当您收到包含URL的JSON时,将它们与基本路径连接起来:

var queryEditorUrl = window.applicationBaseUrl + <the path from your JSON>
var queryEditorUrl=window.applicationBaseUrl+

这样,您的URL就独立于它所在的虚拟目录。

根本不清楚您在这里要做什么。
string basePath = string.Format("{0}://{1}{2}", Request.Url.Scheme, Request.Url.Authority, Url.Content("~"));