我有一个ASP.NET 网站,而不是 Web 应用程序,并且我已经构建了一个CompareValidator
能够脱离它自己的命名容器的自定义:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI;
public class GlobalCompareValidator : CompareValidator
{
new protected void CheckControlValidationProperty(string name, string propertyName)
{
Control control = this.Page.NamingContainer.FindControl(name);
if (control == null)
{
throw new HttpException("Validator_control_not_found");
}
if (BaseValidator.GetValidationProperty(control) == null)
{
throw new HttpException("Validator_bad_control_type");
}
}
}
并且该代码存在于App_Code
目录中。现在,我想在 ASCX 页面上使用这个新的自定义控件,如下所示:
<me:GlobalCompareValidator ID="compareValidator" CssClass="errorMessage" Display="None"
EnableClientScript="false" Text=" " ValidationGroup="LHError" runat="server" />
但是,当尝试注册程序集以使用它时:
<%@ Register TagPrefix="me" Namespace="MyNamespace" Assembly="MyAssembly" %>
我收到此错误:
无法加载文件或程序集“...”或其依赖项之一。该系统找不到指定的文件。
现在,这并不令人惊讶,因为 ASP.NET 网站并不会真正生成这样的程序集。但是,如果我Assembly
关闭标签,它就找不到GlobalCompareValidator
. 当然,它可能也无法通过Assembly
标签找到它,但该错误可能被它无法找到程序集的事实所隐藏。
我到底如何获得可用于 ASP.NET 网站的自定义控件?