ASP.NET页面没有代码后台如何使用其他库/DLL

6

我正在给一个没有代码后台文件的现有页面添加简单的ASP.NET页面(目前无法更改/构建原始项目),除了当我想要使用位于我的项目中的另一个库中的某些函数时,所有工作都很顺利。

例如:

<%@ Page Language="C#"  %>
<%@ Import Namespace="MyProject.BusinessLogic" %>
<HTML>
   <script runat="server" language="C#">
   public void Page_Load(object sender, EventArgs e)
   {
      bool myBool = false;
      MyLabel.Text = myBool.ToString();  //works fine
      MyLabel.Text = MyProject.BusinessLogic.StatusManager.Get().ToString(); //does not work
   }
   </script>
   <body>
      <form id="MyForm" runat="server">
         <asp:label id="MyLabel" runat="server"></asp:label>
      </form>
   </body>
</HTML>

我收到的错误是“...不存在于命名空间'MyProject.BusinessLogic'中(您是否缺少程序集引用?)”
有什么办法可以解决这个引用问题吗?
我尝试了这些选项:http://msdn.microsoft.com/en-us/library/d864zc1k(v=vs.85).aspx,但没有成功。

你说你使用了那些选项,但我在你发布的代码中没有看到尝试。请发布包含正确引用但无法工作的实际代码。 - Robert Harvey
我已经更新了我的代码,加入了我尝试过的内容。 - Tys
2个回答

4
使用 <%@ Import %> 来实现这个功能...
<%@ Application Language="C#" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Web.UI" %>

<script RunAt="server">


//here you can write your C# Code

 public void Page_Load(object sender, EventArgs e)
   {
      bool myBool = false;
      MyLabel.Text = myBool.ToString();  //works fine
      MyLabel.Text = MyProject.BusinessLogic.StatusManager.Get().ToString(); //does not work
   }



</script>

3
首先,您的项目必须引用代码所在的其他dll中的程序集。这可以通过"<%@ Assembly"标记实现。
例如:
<%@ Assembly Name="SomeDll.NameHere.Dll" %>

然而,请注意名称是完整类型名称。例如,该Dll必须在您要在其中使用它的应用程序的BIN目录中。您可以选择将Dll安装在全局程序集缓存中,但是那么您必须为Dll提供带有SNK文件的强名称(在类库项目设置中完成)。
如果您在一个Visual Studio解决方案中有多个项目,则可以使用项目引用,然后引用MyProject.BusinessLogic Dll。当您构建Web应用程序时,它会自动将Dll复制到bin目录中。
现在也许您已经在项目中引用了Dll,但您仍需要在标记中使用<% Assembly>标记。ASPX引擎不知道您的Dll。
您可以选择使用web.config条目将您的Dll注册到ASPX引擎中。
参考:Register assembly in ASP.NET (VS 2005) and web.config

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接