我有一个文字标签,它传递了一个字符串列表。我希望传递给它的一个字符串是一封电子邮件..我希望该电子邮件是一个超链接。这是我到目前为止所得到的,
tenancyManager.UserEmail = "a@b.c";
if (null != tenancyManager.UserEmail)
{
var emailAnchor = "<a href="+"mailto:"+tenancyManager.UserEmail+">"+ "</a>";
builder.Append(emailAnchor);
builder.Append("<br />");
}
这似乎不起作用,任何人都可以帮助我的语法?我也试过了
var email = string.Format("<a href={0}{1} Text={2}> </a>", "mailto:", tenancyManager.UserEmail, tenancyManager.UserEmail);
答案 0 :(得分:9)
您的string.Format()
代码错误。尝试:
var email = string.Format("<a href='mailto:{0}'>{0}</a>", tenancyManager.UserEmail);
答案 1 :(得分:0)
这将做你想要的:
StringWriter stringWriter = new StringWriter();
using (HtmlTextWriter tag = new HtmlTextWriter(stringWriter))
{
tag.AddAttribute(HtmlTextWriterAttribute.Href, string.Format("mailto:{0}", tenancyManager.UserEmail));
tag.RenderBeginTag(HtmlTextWriterTag.A);
tag.Write(tenancyManager.UserEmail);
tag.RenderEndTag();
}
literal.Text = stringWriter.ToString();
虽然我不确定你为什么不只使用<asp:Hyperlink>
?像这样:
<asp:HyperLink id="hypEmail" runat="server" />
hypEmail.NavigateUrl = string.Format("mailto:{0}", tenancyManager.UserEmail);
hypEmail.Text = string.Format("mailto:{0}", tenancyManager.UserEmail);
答案 2 :(得分:0)
您的formatString错误:a html标记没有文本属性。
string.Format("<a href=\"mailto:{0}\">{0}</a>", tenancyManager.UserEmail);
(对于同一文本,使用string.format
和2个不同的占位符没有意义)
无论如何,我认为使用asp:HyperLink
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.hyperlink.aspx代替文字更为干净。
hl.NavigateUrl = string.Format("mailto:{0}", tenancyManager.UserEmail);
hl.Text = tenancyManager.UserEmail;
或者,如果您想拥有完整的html输出控件,请使用GenericHtmlControl
http://msdn.microsoft.com/en-us/library/system.web.ui.htmlcontrols.htmlgenericcontrol.aspx
或HtmlAnchor
http://msdn.microsoft.com/en-us/library/system.web.ui.htmlcontrols.htmlanchor.aspx
恕我直言使用Literal控件来注入html是一种不好的做法