0

我有一个文字标签,它传递了一个字符串列表。我希望传递给它的字符串之一是电子邮件。我希望电子邮件成为超链接。这就是我到目前为止所得到的,

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);
4

3 回答 3

9

你的string.Format()代码是错误的。尝试:

var email = string.Format("<a href='mailto:{0}'>{0}</a>", tenancyManager.UserEmail);
于 2013-02-04T16:32:21.703 回答
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);
于 2013-02-04T16:39:40.537 回答
0

您的 formatString 错误:a html 标记没有 text 属性。

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.aspxHtmlAnchor http://msdn.microsoft.com /en-us/library/system.web.ui.htmlcontrols.htmlanchor.aspx

恕我直言,使用文字控件注入 html 是一种不好的做法

于 2013-02-04T16:46:22.900 回答