我在DataList控件中有这个标记:alt='<%# Eval("ImageDesc") %>'
当我在浏览器中查看该页面时,alt标记始终为空:alt=""
也许这是因为超链接控件不支持alt标签?我怎样才能对alt标签进行数据绑定?
-------这是确切的代码
<asp:HyperLink ID="linkQuoteImage" runat="server" EnableViewState="False" ImageUrl='<%# "/images/"+Eval("ImageFile").ToString().Replace("/","/tmb/") %>' NavigateUrl='<%# "~/Quotes/"+Eval("SlugText") %>' alt='<%# Eval("ImageDesc") %>' Font-Underline="False" ForeColor="#333333"></asp:HyperLink>
答案 0 :(得分:3)
实际上,超链接没有alt
属性。如果需要,请使用工具提示:
<asp:HyperLink ID="lnkTest" runat="server" ToolTip='<%# Eval("Data") %>'>'<%# Eval("OtherData")%>'</asp:HyperLink>
alt
标记用于<img>
标记,以便在找不到图像时显示替换文字。此外,文本在某些浏览器中显示为工具提示。如果要显示工具提示,请使用HTML title
属性,该属性可以使用Tooltip
ASP.Net属性获取。
答案 1 :(得分:3)
alt属性用于超链接
但是如果您使用asp.net超链接控制alt属性被ToolTip替换,请改用
替换 alt ='&lt;%#Eval(“ImageDesc”)%&gt;'通过ToolTip ='&lt;%#Eval(“ImageDesc”)%&gt;'
答案 2 :(得分:2)
如果在aspx页面中
<asp:HyperLink ID="linkQuoteImage" runat="server">Text for image alt</asp:HyperLink>
如果在后面的代码中只做linkQuoteImage.Text =“Text for image alt” - 你需要在alt中的文本
答案 3 :(得分:1)
你的<asp:HyperLink>
控件是否像控制器一样在某个控件内?
此代码适用于我。
前端:
<asp:Repeater ID="rptTest" runat="server">
<ItemTemplate>
<asp:HyperLink ID="testLink" runat="server" alt='<%# Eval("ImageDesc") %>'>This is a link</asp:HyperLink>
</ItemTemplate>
</asp:Repeater>
后端:
protected void Page_Load(object sender, EventArgs e)
{
var images = new List<ImageData>
{
new ImageData { ImageDesc = "test" },
new ImageData { ImageDesc = "test2" }
};
rptTest.DataSource = images;
rptTest.DataBind();
}
...
public class ImageData
{
public string ImageDesc { get; set; }
}
如果您没有使用具有Eval
方法的控件,那么您需要以不同方式添加属性。我建议只在代码隐藏中设置它。
前端:
<asp:HyperLink ID="testLink" runat="server">This is a link</asp:HyperLink>
后端:
protected void Page_Load(object sender, EventArgs e)
{
if (testLink.Attributes["alt"] == null)
{
testLink.Attributes.Add("alt", "test");
}
}