2011-12-15 11 views
2

次のコードでASP.NETユーザーコントロール "Box.ascx"を構築しました。usercontrolインラインコードの関数を呼び出すことが常に機能しない

<div id="divContent" runat="server" visible='<%# AllowedToView(this.Privacy) %>'> 
    Content 
</div> 

コードビハインドでは、 "Box.ascx.cs"に次のコードがあります。

public string Privacy = string.Empty; 
public bool AllowedToView(string privacy) 
{ 
    return true; 
} 

このコントロールをリピーターで使用すると、AllowedToView()関数がヒットします。リピータなしでこのコントロールを使用すると、AllowedToView()関数は呼び出されません。私はこの奇妙な状況がどうして起こるのか知りたいのですが、リピータなしで使用すると、コントロールがAllowedToView()関数を呼び出す方法を知りたいのですが。

詳細は以下のとおりです。

このコントロールは、 "Default.aspx"のリピーターで使用します。

<asp:Repeater ID="rpRecords" runat="server"> 
    <ItemTemplate> 
     <uc1:Box ID="myBox" runat="server" RecordID = '<%# Eval("RecordID") %>' /> 
    </ItemTemplate> 
</asp:Repeater> 

リピータは、次のコードで "Default.aspx.cs" のデータバインドされた:

DataTable dt = FillTable(); 
rpRecords.DataSource = dt; 
rpRecords.DataBind(); 

Iは、次のコードで "ShowBox.aspx" の "Box.ascx" コントロールを使用。

<body> 
    <uc1:Box ID="myBox" runat="server" /> 
</body> 

次のコードを使用して、コードビハインドからユーザーコントロールに値を渡します。

protected void Page_Load(object sender, EventArgs e) 
{ 
    myBox.RecordID = "1"; 
} 

答えて

2

を、#は、それが実行するデータバインディングを必要とすることを意味します。

あなたの質問に答えるには、簡単な答えはmyBox.DataBind()に電話することです。

ご質問はasp.net inline code <%# MyboolVal %>と非常によく似ています。問題は<%=がResponse.Writeと等しく、まっすぐなHTMLを出力するため、visibleプロパティを設定するときには機能しません。

0

イムWebフォーム上のノー専門家が、私はあなたの問題は、あなたがそのメソッドをデータバインドしようとしている、あなたのために働いていないthatsの、<% = AllowedToView(this.Privacy)でそれを入れてみてくださいということだと思い%>

+0

<%= "" %>はResponse.Writeと同等で、サーバーコントロールのプロパティを設定するときには機能しません。 – Peter

1

私はあなたが#を必要とは思っていませんが、代わりにASPタグに=と書いてあります。かなり確実なのはイベントをデータバインディングするためだけであり、リピーターはデータ・バンドをレンダリングするためリピーターで動作するのはそのためです。

は、このリンクをチェックします:別の答えで述べたようにhttp://blogs.msdn.com/b/dancre/archive/2007/02/13/the-difference-between-lt-and-lt-in-asp-net.aspx

+0

=記号を使用したときに何らかのエラーが発生していたので、#を優先しました。しかし、あなたは正しいです。あなたが#データバインディングを思い出させてくれたことは良いことです。記事は非常に参考になった。私はデータバインディングを作成します。 [this](http://stackoverflow.com/a/8326019/931378)のように、私はPage.DataBind()を配置します。 ShowBox.aspx.csのPage_Load()で正しく動作しました。 – sevenkul

関連する問題