【问题标题】:assigning path in Inline javascript in asp.net mvc在asp.net mvc中的内联javascript中分配路径
【发布时间】:2011-08-25 08:23:23
【问题描述】:

我正在使用 MVC 2 架构。

我有一个 Javacript 文件 (x.js)...,其中包含对象 hs 的声明(即 var hs)。

在我的 aspx 文件中,我使用 <script> 标记调用 (x.js) 文件,它运行正常。

我正在使用 hs 变量并在内联脚本中的我的 aspx 中为其属性赋值 - 在下面找到它:

<script type="text/javascript">
    hs.graphicsDir = '../../Resources/graphics/';
    ...
    ...
</script>

当我通过 Firebug 进行调试时,我发现这个内联脚本在我的环境和发布中都在执行。

问题是,在我的环境中,graphicsDir 值被完美地执行并相应地执行,但在发布时路径没有被正确地采用。

请建议如何让它在部署中运行。

【问题讨论】:

    标签: javascript asp.net asp.net-mvc asp.net-mvc-2 asp.net-mvc-routing


    【解决方案1】:

    试试这个

    hs.graphicsDir ="<%= Url.Content("~/Resources/graphics")%>"
    

    【讨论】:

    • @ganesh .尝试在js文件中使用..尚未测试
    • 你不能在.js 文件中拥有它,因为它没有被 ASP.NET 引擎解析。我将单独发布答案,这里写太多了。
    【解决方案2】:

    在另一个正确答案之后,您可以使用 Page_Load 方法中的此类代码将正确的 URL 发送到客户端脚本:

    Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "correct_url", "var graphDir = \"" + Url.Content("~/Resources/graphics") + "\";", true);
    

    然后在你的 JS 文件中有这个:

    hs.graphicsDir = graphDir;
    

    由于它是 MVC 应用程序而不是普通的 ASP.NET,因此您必须按照 here 中描述的步骤添加代码隐藏 - 如果您不想这样做,您也可以直接在 .aspx 文件本身中包含此类代码:

    <script type="text/javascript">
    var graphDir = "<%=Url.Content("~/Resources/graphics")%>";
    </script>
    

    并且在.js 文件中具有与我上面解释的相同的代码。 (使用全局变量)

    【讨论】:

    • 他使用的是MVC 2。mvc中没有page_load方法。对吗?
    • 不知道,不熟悉 MVC,但由于这个问题也被标记为 ASP.NET,所以应该有类似的东西 somewhere。编辑:见我的编辑。 :)
    猜你喜欢
    • 1970-01-01
    • 2013-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多