web-dev-qa-db-ja.com

Eval()、XPath()、Bind()などのデータバインディングメソッドは、データバインドコントロールのコンテキストでのみ使用できます。

次のエラーが表示されます

Eval()、XPath()、Bind()などのデータバインディングメソッドは、データバインドコントロールのコンテキストでのみ使用できます。

しかし、私がやろうとしているのはASP.NET REPEATERコントロール内です

<% if ( Eval("Message").ToString() == HttpContext.Current.Profile.UserName) %>
<% { %>

           <asp:ImageButton runat="server" etc.... />
<% } %>
34
Dan

構文は

<%# Eval("...") %>

次のようなことができます

<asp:ImageButton Visible='<%# ShowImg(Eval(Container.DataItem,"Message")) %>' />

そしてあなたのコードビハインドで:

boolean ShowImg(string msg)
{
     return (msg == HttpContext.Current.Profile.UserName);
}
46
Steve

代替手段はこれです:

<asp:ImageButton runat="server" Visible='<%# Eval("Message").ToString() == HttpContext.Current.Profile.UserName %>' />

その場合、コードビハインドは必要ありません。

27
Jen

手遅れですが、私は自分のやり方で答えたいと思います、私はそれを達成するために使用したもの:

<%# Eval("Message").toString()== HttpContext.Current.Profile.UserName)?"<asp:ImageButton runat="server" etc.... />" :""%>

これで、メッセージがユーザー名と等しい場合にのみ画像ボタンが表示されます。

これは、同じ状況の他の誰かを助けるかもしれません。

私の状況では、nullと空の文字列をチェックする必要がありました...したがって、私はこのように実装しました:

<%# Eval("DateString")!= null && Eval("DateString")!= ""? "<span class='date'>"+Eval("DateString") + "</span>":"" %>

ありがとう

3
Rohit Arora

それを実装する別の方法:

public string nonImage() {
    string imgTag = "", Article_OwnerID = "", Article_ID = "", Article_OwnerType = "", imgSrc = "";
    DataTable DtArticles = SE_Article.GetArticlesList(UserID, UserID, ProfileType, CounterOfPage, CountPerPage, (short) SE_Action.OwnerType.user, SE_Security.CheckInjection(TxtSearch.Text.Trim()), CategoryID, "all_articles", DrpOrderBy.SelectedValue, DrpSort.SelectedValue);
    if (DtArticles != null && DtArticles.Rows.Count > 0) {
        Article_OwnerID = DtArticles.Rows[0]["Article_OwnerID"].ToString();
        Article_ID = DtArticles.Rows[0]["Article_ID"].ToString();
        Article_OwnerType = DtArticles.Rows[0]["Article_OwnerType"].ToString();
    }
    if (SE_Article.GetArticleCover(Convert.ToInt32(Article_OwnerID), Convert.ToInt32(Article_ID), Convert.ToInt16(Article_OwnerType)) != System.Configuration.ConfigurationManager.AppSettings["NoPhotoArticleThumb"]) {
        imgSrc = SE_Article.GetArticleCover(Convert.ToInt32(Article_OwnerID), Convert.ToInt32(Article_ID), Convert.ToInt16(Article_OwnerType));
        imgTag = "<img class='img_article_cover' src='" + imgSrc + "' alt='مقاله" + Article_ID + "' />";
    }
    return imgTag;
 }


 <% nonImage(); %>
1
Danial