【问题标题】:ASP.NET MVC routing and paths is js filesASP.NET MVC 路由和路径是js文件
【发布时间】:2011-02-26 19:15:45
【问题描述】:

我们现在面临一个问题。我们有一个相当大的页面,其中包含一个 loooong 内联脚本,它完成了所有工作。我们现在想要对其进行混淆并将其用作单独的 .js 文件。但问题是我们有由 Url 助手 (Url.Content()) 生成的路径。那么从页面中分离js文件而不使用硬编码的路径字符串的最佳方法是什么?

【问题讨论】:

    标签: javascript asp.net-mvc url path


    【解决方案1】:

    您可以创建 javascript 函数来设置所需的路径并从页面的一个小脚本部分调用它们。

    Javascript 文件:

    var resource1;
    var resource2;
    
    function setResourcesReferences(resource1, resource2, ...) {
    
    }
    

    ASPX 文件:

    <script type="text/javascript">
       setResourcesReferences(<% Url.Content("Resource1") %>, <% Url.Content("Resource2") %>, ...);
    </script>
    

    【讨论】:

      【解决方案2】:

      我通常在单独的视图中编写我的 javascript(只有 js 代码)并使用我自己的操作结果来呈现它。这样,我可以在服务器端利用 c#,如果需要,我可以使用模型,它将作为外部 js 文件包含在浏览器中(具有适当的缓存)。我使用的动作结果可以在这里找到:http://codepaste.net/p2s3po

      更新

      您可以从您的操作中使用这样的操作结果:

      public ActionResult JsFile() {
          ViewData.Model = //Create model if you want one;
              return new JavascriptFileResult(true)
                         {
                             TempData = TempData,
                             ViewData = ViewData
                         };
      }
      

      那你只要把它当作普通视图来对待(但只在视图中编写javascript)。当然,您也可以采用任意数量的参数。

      你可以像这样包含它:

      <script type="text/javascript" src="<%=Url.Action("JsFile", "ControllerName")%>"></script>
      

      【讨论】:

      • 这听起来是个不错的解决方案。但是,您发送的代码 sn-p 中的 RegexReplace 方法和 JavaScriptCompressor 类来自哪里?还有一个问题——我应该如何从我的操作中使用 JavascriptFileResult?
      • @HiveHicks,对不起,忘了提。它们都来自 Yahoo.Yui.Compressor 库,您可以在此处下载:yuicompressor.codeplex.com。我将更新我的答案,向您展示如何使用操作结果。
      • @HiveHicks,对我来说效果很好。如果您需要动态 css 以及来自 db 的值,则可以对 css 进行同样的操作。
      • +1 Mattias,我知道你已经有一段时间没有“升级”这个了。只是想说,它真的很好用。自第一稿以来有任何 cmets/additions 吗?我希望对此进行全面测试并将其合并到生产应用程序中,有什么我应该注意的吗??
      • Mattias,我还冒昧地使用参数重载了 JavascriptFileResult 初始化程序,以为“视图”提供替代文件名。这意味着您可以使用字符串 jsFilename 参数调用 jsFile 操作,该参数调用同名视图,而不是查找 jsfile.as(pc)x。只是觉得你可能会感兴趣。我会发布我的更改,你当然可以弄清楚我做了什么我猜:)
      猜你喜欢
      • 1970-01-01
      • 2013-06-01
      • 1970-01-01
      • 2014-12-23
      • 2017-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-12
      相关资源
      最近更新 更多