C# 当移动到JavaScript.js文件时,C的内联服务器代码无法工作

C# 当移动到JavaScript.js文件时,C的内联服务器代码无法工作,c#,javascript,file,inline,C#,Javascript,File,Inline,在我的C代码隐藏页面中,我有以下内容: MembershipUser currentUser = Membership.GetUser(false); HttpContext.Current.Session["UserGuidAsString"] = currentUser.ProviderUserKey.ToString(); 在相应的ASPX页面底部,我有以下代码: </form> <script type="text/javascript"> var userG

在我的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>
var guid = document.getElementById("guid").value;
它失败了,因为它只是给出了一个带有 作为信息


我可以知道如何在JavaScript.js文件中使用内嵌式服务器C代码吗?

通过访问服务器变量

'<%=Session["UserGuidAsString"]%>'
它不是Javascript的功能

您也可以在不使用js块的情况下编写此代码。。 它就像ASP代码。。
因此,它只在javascript中使用.aspx页面,而不是通过访问服务器变量

'<%=Session["UserGuidAsString"]%>'
它不是Javascript的功能

您也可以在不使用js块的情况下编写此代码。。 它就像ASP代码。。
因此,它仅在javascript中使用.aspx页面,一种常见的解决方法是将服务器变量放入html隐藏元素中。例如:

<input type="hidden" id='guid' value='<%=Session["UserGuidAsString"]%>' />
或者,您可以在html中定义一个js变量,并在js文件中引用该变量。只需确保在引用变量之前声明它

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

然后在js文件中只需使用guid变量。

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

<input type="hidden" id='guid' value='<%=Session["UserGuidAsString"]%>' />
或者,您可以在html中定义一个js变量,并在js文件中引用该变量。只需确保在引用变量之前声明它

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

然后在js文件中,您只需使用guid变量。

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

在您的特定案例处理GUI中,您确实不想走这条路,因为由于.js文件缓存的性质,您将遇到很多问题,无法确保每次都提供一个新版本


我建议重新创建一个非常简单、是的、模块化/可重用的JS函数,通过使用AJAX或等效工具调用GetUserGuidAsString.aspx。

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

在您的特定案例处理GUI中,您确实不想走这条路,因为由于.js文件缓存的性质,您将遇到很多问题,无法确保每次都提供一个新版本


我建议重新创建一个非常简单、模块化/可重用的JS函数,使用AJAX或等效工具调用getUserGuidassString.aspx。

感谢您的帮助。隐藏的输入字段似乎是个好主意。不过,我唯一担心的是缓存旧guid。谢谢您的帮助。隐藏的输入字段似乎是个好主意。但是,我唯一担心的是缓存旧的guid。