【问题标题】:how do i build an entire mailto anchor in asp.NET我如何在 asp.NET 中构建整个 mailto 锚点
【发布时间】:2013-01-19 09:43:50
【问题描述】:

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

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

【问题讨论】:

  • 也许在锚标签中放一些文字?
  • “似乎不起作用”是什么意思?你有例外吗?您的emailAnchor 中的变量是设置还是返回null?更多信息总是更好...
  • 在你的String.Format 中,你的格式项比参数多。这会引发错误。
  • 你为什么使用文字而不是 asp:hyperlink??

标签: c# asp.net hyperlink anchor stringbuilder


【解决方案1】:

您的string.Format() 代码错误。试试:

var email = string.Format("<a href='mailto:{0}'>{0}</a>", tenancyManager.UserEmail);

【讨论】:

    【解决方案2】:

    这会做你想做的事:

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

    虽然我不确定你为什么不直接使用&lt;asp:Hyperlink&gt;?像这样:

    <asp:HyperLink id="hypEmail" runat="server" />
    hypEmail.NavigateUrl = string.Format("mailto:{0}", tenancyManager.UserEmail);
    hypEmail.Text = string.Format("mailto:{0}", tenancyManager.UserEmail);
    

    【讨论】:

      【解决方案3】:

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

      string.Format("<a href=\"mailto:{0}\">{0}</a>", tenancyManager.UserEmail);
      

      (将string.format 与同一文本的两个不同占位符一起使用是没有意义的)

      无论如何,我认为使用 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.aspxHtmlAnchorhttp://msdn.microsoft.com/en-us/library/system.web.ui.htmlcontrols.htmlanchor.aspx

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

      【讨论】:

      • 我真的很想知道为什么有人不赞成我的回答。如果有人不同意一个答案,它应该争论而不是隐藏在匿名之下。这是stackexchange网络的基础。恕我直言
      猜你喜欢
      • 2011-05-14
      • 2011-06-13
      • 1970-01-01
      • 1970-01-01
      • 2011-03-11
      • 1970-01-01
      • 1970-01-01
      • 2010-10-19
      • 1970-01-01
      相关资源
      最近更新 更多