asp.net repeater eval

asp.net - Los métodos de enlace de datos como Eval(), XPath() y Bind() solo se pueden usar en el contexto de un control de datos



repeater (4)

Estoy teniendo el siguiente error

Los métodos de enlace de datos como Eval (), XPath () y Bind () solo se pueden usar en el contexto de un control de datos.

pero todo lo que estoy tratando de hacer es dentro de un control ASP.NET REPEATER

<% if ( Eval("Message").ToString() == HttpContext.Current.Profile.UserName) %> <% { %> <asp:ImageButton runat="server" etc.... /> <% } %>


Es demasiado tarde, pero me gustaría responderlo a mi manera, lo que solía lograrlo:

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

Ahora esto solo mostrará el botón de imagen si Mensaje es igual a nombre de usuario.

Esto podría ayudar a cualquier otro en la misma situación.

En mi situación, necesitaba verificar una cadena nula y vacía ... así que implementé esto a continuación:

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

Gracias


La sintaxis es

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

Podrías hacer algo como

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

y en tu código detrás:

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


Otra forma de implementarlo:

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(); %>


Una alternativa es esta:

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

Entonces no hay necesidad de código detrás.