【问题标题】:return a js file from asp.net mvc controller从 asp.net mvc 控制器返回一个 js 文件
【发布时间】:2010-04-03 17:23:04
【问题描述】:

各位程序员大家好

我想为我的应用程序中的每个 MVC 集创建一个单独的 js 文件

/Controllers/
    -TestController.cs
/Models/
/Views/
    /Test/
        -Index.aspx
        -script.js

我想将 js 包含在 Index.aspx 中

<script type="text/javascript" src="<%=UriHelper.GetBaseUrl()%>/Test/Js"></script>

或者说得更简单,当我在浏览器中调用http://localhost/Test/Js 时,它会显示script.js 文件

如何在Controller中编写Action?我知道这必须通过 return File 方法来完成,但我还没有成功创建该方法:(

【问题讨论】:

  • 发布您尝试过的代码,我们会看看您是否和/或哪里出了问题。

标签: asp.net-mvc file controller return


【解决方案1】:

怎么样:

    public FileContentResult Js()
    {
        return File(System.IO.File.ReadAllBytes(Server.MapPath("/Test/script.js")), "text/javascript");
    }

我要补充一点,你真的应该将你的脚本放在你的 Content 文件夹下,因为 MVC 是关于配置之上的约定,并且通过尝试将你的脚本与你的视图一起放置,你违反了约定。

【讨论】:

  • 除了您想要为返回的文件添加安全验证的奇怪情况,这些文件依赖于用户的身份验证配置文件/成员身份 ID。在那种情况下,约定会很糟糕。
  • 如果您建议我认为您的建议,请不要忘记,您可以在服务页面中使用您的模型初始化 javascript 变量/属性,然后在集中服务中检查它们的存在/值javascript 模块。您还可以将集中服务的脚本目录制作成基于控制器的解决方案,并在那里修改您需要的值。有很多解决方案/方法可供您使用,它们比围绕视图层次结构的 javascript 文件更干净。
【解决方案2】:

两个选项:

  • 使用 Javascript ActionResult 将 javascript 作为字符串返回
  • 使用 File download ActionResult 将 javascript 文件作为可下载文件返回

HTH。

【讨论】:

    猜你喜欢
    • 2012-07-18
    • 1970-01-01
    • 2013-02-01
    • 2015-10-12
    • 2012-02-28
    • 1970-01-01
    • 2023-02-11
    • 1970-01-01
    相关资源
    最近更新 更多