【问题标题】:Class and acessibility problem c# & asp.net类和可访问性问题 c# & asp.net
【发布时间】:2011-08-31 17:05:14
【问题描述】:

我有像这样的小班

public static class TSM
{

    static string TokenID = "";

    public static string GetTSM()
    {
        TokenID = new Guid().ToString();
        return TokenID;
    }

}

`GetTokenID `will return a string

我只是从我的 aspx 页面调用 GetTokenID,比如

<script language="javascript" type="text/javascript">
    var token= <% =TSM.GetTSM() %>;

我在运行那个 aspx 页面时遇到错误。

错误是

编译错误 说明:在编译服务此请求所需的资源期间发生错误。请查看以下具体错误详情并适当修改您的源代码。

编译器错误信息:CS1002: ;预计

请指导我出了什么问题。谢谢

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    您需要将声明此 TSM 类的名称空间带入您网页的范围:

    <%@ Import Namespace="SomeNamespace" %>
    ...
    <script type="text/javascript">
        var token = '<%=TSM.GetTSM() %>';
    </script>
    

    或完全引用它:

    <script type="text/javascript">
        var token = '<%= SomeNamespace.TSM.GetTSM() %>';
    </script>
    

    或将其包含在 web.config 的 &lt;namespaces&gt; 部分中。

    备注:请注意&lt;%=TSM.GetTSM() %&gt; 周围的'',因为javascript 中没有Guid 类型。您必须使用字符串。

    还请注意,由于分配了此静态字段,您的服务器端代码不是线程安全的。此外,它总是会生成一个空的 guid。

    以下是如何改进它:

    public static class TSM
    {
        public static string GetTSM()
        {
            return Guid.NewGuid().ToString();
        }
    }
    

    【讨论】:

    • 是的,现在可以了,谢谢,但 guid 看起来像 var token = '00000000-0000-0000-0000-000000000000'....实际上 guid 看起来不同。
    • @Thomas,如果你想生成一个新的 guid,你应该使用TokenID = Guid.NewGuid().ToString();。 Guid 构造函数不会生成新的 guid。
    • GetTSM 将从服务器端返回 guid,当我在运行时在 aspx 页面源中看到 guid 时,我发现 var token = '00000000-0000-0000-0000-000000000000' 之类的 guid.... .我认为这不是一个有效的指导。
    猜你喜欢
    • 2012-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多