0

我正在尝试获取一个 mailto 链接以显示人名而不是实际的电子邮件地址。

在我的details.cshtml文件中,我将页面强输入到我的供应商

@model TheWorkshop.Web.Models.Supplier

但是虽然我可以使用

@Html.DisplayFor(model => model.Email)

显示与 mailto 相同的文本值的 mailto 链接,例如

<a href="mailto: me@blah.com">me@blah.com</a>

我想要的是显示此人的姓名。所以在寻找之后我决定尝试制作一个 Helper 方法

public static MvcHtmlString PrettyEmailAddress(this HtmlHelper htmlHelper, 
                                               string email, string name)
{
    var mailToLink = new TagBuilder("a");
    mailToLink.Attributes.Add("mailto", email);
    mailToLink.SetInnerText(name);

    return MvcHtmlString.Create(mailToLink.ToString());
}

但问题是当我尝试在绑定中调用它时:

 @Html.PrettyEmailAddress(@model.Email, @model.Name))

我收到编译错误

CS0103:当前上下文中不存在名称“模型”

如果我传递字符串而不是@model.Emailand '@model.Name` 那么助手工作正常,但我如何将变量传递给助手?

4

2 回答 2

1

尝试像这样调用你的助手:

@Html.PrettyEmailAddress(Model.Email, Model.Name)

注意事项:

  • 首都M
  • 无需使用@,因为您已经在服务器上

你也可能想更换:

mailToLink.Attributes.Add("mailto", email);

和:

mailToLink.Attributes.Add("href", string.Format("mailto: {0}", email));

以达到预期的效果。

于 2013-03-11T21:34:44.233 回答
0

试试这个:

<a href="mailto:@Model.Email">@Html.ValueFor(model=>model.Email)</a>
于 2014-01-10T22:20:28.803 回答