私は<asp:Panel>
とよく似たUserControlを持っています。ユーザコントロールの内部プロパティではサポートされていませんが、パネルでサポートされているコードブロックはありますか?
パネルには、これを行うことができますが:
<uc1:NotPanel runat="server">
<img src='<%= ResolveUrl("~/img.png")%>' />
</uc1:NotPanel>
error: Code blocks are not supported in this context
NotPanelはそうのように参照されています:
<%@ Register Src="~/Controls/NotPanel.ascx" TagName="NotPanel" TagPrefix="uc1" %>
私のコントロールでこれをしようとしたとき
<asp:Panel runat="server">
<img src='<%= ResolveUrl("~/img.png")%>' />
</asp:Panel>
私はエラーを取得します
と定義されています(これはgrosですSLY削ぎ落としたバージョン):
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="NotPanel.ascx.cs" Inherits="MyNamespace.NotPanel" %>
<div class="something">
<asp:PlaceHolder ID="phControls" runat="server" />
</div>
このコードビハインドで:
[ParseChildren(true, "Content")]
[PersistChildren(false)]
public partial class NotPanel : System.Web.UI.UserControl
{
[PersistenceMode(PersistenceMode.InnerDefaultProperty)]
public Control Content { get; set; }
public void Page_Init(object sender, EventArgs e)
{
phControls.Controls.Add(Content);
}
}
私は、コードブロックを使用することができないことを、このクラスの定義と間違って何かをやっていますか?またはこれはUserControlsの制限ですか?
次のエラーを取得することなく、同一の制御はそれを参照することができない内部 ないある<asp:CompareValidator>
-
(おそらく同じ原因で)関連する問題は、テキストボックスは、これらのコントロールのいずれかの内部に配置されたときに発生します
Unable to find control id 'txtCompareTo' referenced by the 'ControlToCompare' property of 'compareValidator'.
<uc1:NotPanel>
が<asp:Panel>
に置き換えられても、これはうまくいきます。この仕事をするために何かできることはありますか?
ありがとうございますが、この特定のケースを解決するには、このコントロールのユースケースは、新しいものと既存のマークアップのさまざまなブロックの "ラッパー"として、特定のコンテンツの処理を追加したくありませんコントロール自体に。 – FTWinston
@FTWinston次に、ユーザーコントロールではなくカスタムコントロール(ASP.NETサーバーコントロール)を調べる必要があります。http://www.codeproject.com/Articles/28783/Your-First-ASP-NET-CustomControlを参照してください。 –
CustomControlを使用していて、同じエラーが発生しました:このコードブロックはこの機能ではサポートされていませんコンテキスト。 – FTWinston