0

文字列のリストが渡されるリテラルタグがあります。渡したい文字列の 1 つは電子メールです。電子メールをハイパーリンクにしたいと思います。これは私がこれまでに得たものです。

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 出力コントロールが必要な場合は、 http://msdn.microsoft.com/en-us/library/system.web.ui.htmlcontrols.htmlgenericcontrol.aspx またはGenericHtmlControl http://msdn.microsoft.comを使用しますHtmlAnchor 。 /en-us/library/system.web.ui.htmlcontrols.htmlanchor.aspx

IMHO リテラル コントロールを使用して html を挿入するのは悪い習慣です

于 2013-02-04T16:46:22.900 に答える