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.