如何将代码隐藏放在多个文件中?

时间:2009-02-13 06:25:35

标签: c# asp.net code-behind

关于在Visual Web Developer 2008 Express环境中正确编译和执行的内容以及在我的Web服务器上失败的内容,我遇到了很多不一致的问题。

特别是,我的Web Developer项目中有一个aspx和aspx.cs代码隐藏,以及一些额外的.cs文件。它构建良好,并在开发服务器下执行正常。 一旦我将文件上传到我的服务器,代码隐藏似乎并不知道其他.cs文件。

使我的aspx应用程序继承其他.cs文件的正确方法是什么?

---更新--- 由于我没有真正找到我需要的答案,让我对我正在做的事情更加明确:

我有三个文件:

Default.aspx的

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Import Namespace="UtilClasses" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Default.aspx.cs

public partial class _Default : Page { }

App_Code文件/ UtilClasses.cs

namespace UtilClasses {
  public class AClass {
    public const int A = 1;
  }
}

在此示例中,如果我尝试执行以下任何操作,我将在Web服务器上收到编译错误:

  • 使用@Import
  • 引用App_Code
  • 从aspx.cs codebehind或
  • 中调用其中包含的代码
  • 从aspx页面调用代码。

它在Web Developer 2008中编译得很好。该解决方案是一个网站,它通过FTP自动发布到我的网络服务器。要发布的文件的确切列表是:

  • Default.aspx的
  • Default.aspx.cs
  • App_Code文件/ UtilClasses.cs
  • 的web.config

3 个答案:

答案 0 :(得分:3)

您似乎遇到了部署问题。

只需发布(在构建菜单中有一个发布项目)将您的网络应用程序/网站添加到文件夹中,然后将该文件夹中的文件移动到您的服务器。

我认为你的目录中有旧的汇编文件和新类。

希望这会有所帮助

答案 1 :(得分:1)

您可以使用部分类。添加文件(* .cs)并将您的类定义为部分。这样,您可以分发您的方法,属性和其他文件

答案 2 :(得分:0)

这是在Web应用程序中组织代码的一个非常常见的问题。以下是一些可以帮助您解决问题的建议。

  1. 如果使用单个项目并且它是ASP.net网站项目,请将.cs文件放在app_code文件夹中。

  2. 明智地使用名称空间并跟踪哪个名称空间。如果你有像Resharper这样的东西,它会保存这个任务。

  3. 理想情况下,您的Web项目中应该只有页面相关和util类。使用C#express创建库以用于其他功能。使用NUnit / MbUnit等测试这些库。

  4. 如果您怀疑某些内容是在Cassini上运行而在IIS中运行的话。开发人员或本地IIS是唯一的解决方案。

  5. 希望有所帮助!