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,但我不想。。。
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
属性。