【问题标题】:Should I use Url.Content() or ResolveUrl() in my MVC views?我应该在 MVC 视图中使用 Url.Content() 还是 ResolveUrl()?
【发布时间】:2011-01-25 23:01:03
【问题描述】:

在构建这样的代码时:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    <% 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>
    

    应该会节省几毫秒 :)

    【讨论】:

    • 这可能节省不到几毫秒。
    • 我不认为它会节省任何东西。使用 Gulp 打包 JS 和 CSS 比微管理 url 更有意义。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • @Darin 有什么理由使用其中一个吗?
      • 在 MVC 应用程序中我更喜欢Url.Content。它对单元测试更友好。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-05
      • 2011-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多