Web アプリケーションではなくASP.NET Websiteがあり、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" %>
次のエラーが表示されます。
ファイルまたはアセンブリ '...' またはその依存関係の 1 つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。
ASP.NET Web サイトは実際にはそのようなアセンブリを生成しないため、これはそれほど驚くべきことではありません。ただし、Assembly
タグを外したままにすると、見つかりませんGlobalCompareValidator
。確かに、Assembly
タグでも見つからない可能性がありますが、そのエラーは、アセンブリが見つからないという事実によって隠されている可能性があります。
ASP.NET Web サイトで使用できるカスタム コントロールを取得するにはどうすればよいでしょうか。