我应该在MVC视图中使用Url.Content()或ResolveUrl()吗?

时间:2010-03-10 15:20:57

标签: asp.net-mvc-2 url-rewriting .net-4.0 relative-path

构建这样的代码时:

<script type="text/javascript" src="<%=ResolveUrl("~/js/js.js")%>"></script>

<input type="image" src="<%=ResolveUrl("~/img/submit.png")%>" />

我应该使用Url.Content还是ResolveUrl()?有什么区别?

3 个答案:

答案 0 :(得分:30)

如果您在MVC应用程序中使用IIS URL重写,例如将http://yoursubdomain.example.com/MyController/MyAction内部视为http://hosted.example.com/yoursubdomain/MyController/MyAction,Url.Content()将生成正确的子域相对链接。在这种情况下,ResolveUrl()将生成错误的链接。

答案 1 :(得分:14)

Url.Content更像MVCish,因为它是正常的。自ASP.NET开始以来,ResolveUrl已经存在。

答案 2 :(得分:12)

我更喜欢将站点根目录捕获到局部变量并重用它

<% var siteroot = Url.Content("~/") %>

<script type="text/javascript" src="<%: siteroot %>Script/jquery-1.4.1.js"></script>
<script type="text/javascript" src="<%: siteroot %>Script/jquery.validate.js"></script>

它应该节省几毫秒:)。