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

Mic*_*ren 21 url-rewriting relative-path .net-4.0 asp.net-mvc-2

在构建这样的代码时:

<script type="text/javascript" src="<%=ResolveUrl("~/js/js.js")%>"></script>
Run Code Online (Sandbox Code Playgroud)

要么

<input type="image" src="<%=ResolveUrl("~/img/submit.png")%>" />
Run Code Online (Sandbox Code Playgroud)

我应该使用Url.Content或ResolveUrl()?有什么不同?

Lev*_*evi 30

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


Dar*_*rov 14

Url.Content更像是MVCish,因为它是正常的.ResolveUrl自ASP.NET开始就存在.

  • 在MVC应用程序中,我更喜欢`Url.Content`.它更具有单元可测试性. (4认同)

c.s*_*kun 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>
Run Code Online (Sandbox Code Playgroud)

它应该节省几毫秒:)

  • 这可能节省不到几毫秒. (13认同)