Asp.Net和在多个.cs文件上拆分的名称空间

本文关键字:拆分 空间 文件 cs Net Asp | 更新日期: 2023-09-27 18:10:37

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

作为同一命名空间中这两个文件的内容,我希望能够使用其中一个文件中的一些类,反之亦然,就好像所有代码都在一个大文件中一样,但显然它不起作用

示例代码:

文件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,但我不想。。。

Asp.Net和在多个.cs文件上拆分的名称空间

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

您必须从有效位置调用代码。现在,您的调用在任何方法或属性之外。它不在有效的位置。看看上面的例子,我把它包装在一个属性和一个方法中。

您的类应该按预期工作,没有任何问题。根据您的Assembly指令,我认为您希望在ASPX标记中使用myConfig?要做到这一点,而不是Assembly指令,只需导入您的命名空间:

<%@ Import Namespace="myincludes" %>

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

  dbaddress is: <%=myConfig.dbaddress %>  

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

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

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