我是MVC4 / razor2的新手,我认为了解使用@ Url.Content和@ Url.Action的一般好处 – 如果我的路由或虚拟目录发生更改,则会正确呈现magic-url-strings.
我在一个充满了’@ Url.Content(“〜”)’的视图中查看了一些遗留的Javascript-with-razor代码.这将呈现为“/” – 或网站根目录.哪个….总是如此,不是吗?
或者是否存在某些可能以不同方式呈现的情况?
注意:它不是〜/ – 只是普通的.
我正在计划提取对辅助函数的剃刀调用,并将JavaScript的主要块移动到外部文件中(用于linting和一般的“清洁度”).我不需要“修复”当前发生的任何事情,但我想更好地理解它.
解决方法
Url.Content将波浪号映射到应用程序根目录.应用程序根目录与网站根目录不同.
来自这篇文章http://msdn.microsoft.com/en-us/library/system.web.virtualpathutility(v=vs.110).aspx:
An absolute virtual path starts with the literal slash mark (/). A
relative virtual path is relative to the application root directory,
if it is just a tilde (~) or starts with the tilde and a double
backslash (~\) or the tilde and a slash mark (~/). Making a virtual
path relative makes the path independent of the application.
从MVC4开始,Url.Content不需要将代字号转换为应用程序根目录:http://beletsky.net/2012/04/new-in-aspnet-mvc4-razor-changes.html