【问题标题】:inline Server Code for C# Fails to work when moved to a JavaScript .js fileC# 的内联服务器代码在移动到 JavaScript .js 文件时无法工作
【发布时间】:2012-04-23 17:23:47
【问题描述】:

在我的 C# 代码隐藏页面中,我有以下内容:

MembershipUser currentUser = Membership.GetUser(false);

HttpContext.Current.Session["UserGuidAsString"] = currentUser.ProviderUserKey.ToString();

在相应的 ASPX 页面底部,我有以下代码:

</form>
<script type="text/javascript"> var userGuidAsString = '<%=Session["UserGuidAsString"]%>';
                                alert(userGuidAsString);
</script>
</body>
</html>

当我运行页面时,它会给出正确的预期结果,即带有用户 GUID 的警告框

我想将 JavaScript 代码移动到 .js 文件中,以便代码更加模块化和有条理。 我创建了以下包含以下内容的 test.js javascript 文件:

var userGuidAsString = '<%=Session["UserGuidAsString"]%>';
alert(userGuidAsString);

我还修改了 ASPX 页面,使其包含 test.js javascript 文件:

</form>
    <script src="/Scripts/test.js" type="text/javascript"></script>
    </script>
</body>
</html>

它失败了,因为它只是给出了一个警告框 '' 作为消息

我可以请我知道如何使在线服务器 C# 代码在 JavaScript .js 文件中工作吗?

【问题讨论】:

    标签: c# javascript file inline


    【解决方案1】:

    通过这个你访问的服务器变量

    '<%=Session["UserGuidAsString"]%>'
    

    它不是 Javascript 的功能。

    你也可以在没有 js 块的情况下编写此代码.. 它就像 ASP 代码.. 所以它只能在 .aspx 页面上工作,而不是在 javascript 中

    【讨论】:

      【解决方案2】:

      一个常见的解决方法是将服务器变量放在 html 隐藏元素中。例如:

      <input type="hidden" id='guid' value='<%=Session["UserGuidAsString"]%>' />
      

      然后是你的 javascript 文件:

      var guid = document.getElementById("guid").value;
      

      或者,你可以在你的html中定义一个js变量,并在你的js文件中引用它。只需确保在引用变量之前声明它。

      <script type="text/javascript">
          var guid = '<%=Session["UserGuidAsString"]%>';
      </script>
      <script type="text/javascript" src="yourScript.js></script>
      

      然后在你的 js 文件中你可以简单地使用 guid 变量。

      【讨论】:

      • 感谢您的帮助。隐藏的输入字段似乎是个好主意。但是,我唯一担心的是旧的 guid 会被缓存。
      【解决方案3】:

      为了在 .js 文件到达客户端之前在服务器上执行 C#,您必须在 IIS 中注册该页面扩展名,以便 asp_net .dll 处理 .js 文件。

      在您的特定情况下(处理 GUID),您真的不想走这条路,因为 .js 文件缓存的性质,确保它是一个新版本时会遇到很多问题每次都有。

      我建议重新创建一个非常简单(是的,模块化/可重用)的 JS 函数,该函数使用 AJAX 或等效方法调用 GetUserGuidAsString.aspx。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-08-16
        • 2023-03-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多