Asp.Net和命名空间分割为多个.cs文件

时间:2014-06-28 21:34:37

标签: c# asp.net

在我建站点中,我在wwwroot的子目录下有2个.cs文件。所述文件包含一堆实用程序函数,属于同一名称空间(即:namespace myUtils)

作为同一命名空间中这两个文件的内容,我希望能够使用另一个中的一个类,反之亦然,好像所有代码都在一个大文件中,但显然它没有#39 ;工作

示例代码:

文件1:

using System; 
using System.Collections;

namespace myincludes
{
    public static class myConfig
    {
    public static String dbaddress = "127.0.0.1";
    }
}

文件2:

using System; 
using System.Collections;

namespace myincludes
{
    public static class myUtil
    {
        public static void doStuff()
        {
            String test = myConfig.dbaddress;
        }
    }
}

aspx页面:

<%@ Page Language="C#" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.Odbc" %>
<%@ Import Namespace="System.Security.Cryptography" %>
<%@ Import Namespace="System.Collections.Generic" %>
<%@ Assembly src="./includes/file1.cs" %>
<%@ Assembly src="./includes/file2.cs" %>

<%%>

<html>
<head></head>
<body>hi</body>
</html>

我收到编译错误

Compiler Error Message: CS0103: The name 'myConfig' does not exist in the current context

基本上没有关于Assembly src指令的这种用法的文档。似乎常见的路线是生成二进制DLL,但我不是......

3 个答案:

答案 0 :(得分:0)

public static class myUtil
{
    public static string test { get{return myConfig.dbaddress;}}

    public static string SomeMethod()
    {
       return myConfig.dbaddress;
    }

}

您必须从有效位置调用代码。现在你的电话在任何方法或财产之外。它不在有效的位置。看看我上面的示例,我将它包装在属性和方法中。

答案 1 :(得分:0)

您的课程应该按照您的意图正常工作,没有任何问题。我从您的Assembly指令中假设您希望在ASPX标记中使用myConfig?要做到这一点,而不是汇编指令,只需导入您的命名空间:

<%@ Import Namespace="myincludes" %>

然后您可以在标记中使用myConfig

  dbaddress is: <%=myConfig.dbaddress %>  

答案 2 :(得分:0)

听起来您可能正在使用网站项目,而不是预编译的Web应用程序。如果您只是将.cs文件转储到随机目录中,除非您明确引用它,否则ASP.NET将无法找到它。

尝试将文件放在Web根目录正下方的特殊目录App_Code中。放置在那里的源文件将自动编译。有关其他说明,请参阅this MSDN page

*:例如,ASP.NET Web窗体页面通常以@Page指令开头  CodeFile属性指向源文件。