我正在尝试使用人名而不是实际的电子邮件地址来显示mailto链接。
在我的details.cshtml
文件中,我的页面强烈输入了我的供应商
@model TheWorkshop.Web.Models.Supplier
但是我可以使用
@Html.DisplayFor(model => model.Email)
显示mailto链接,其文本值与mailto相同,例如
&LT; a href =“mailto:me@blah.com”&gt; me@blah.com< / A&GT;
我想要的是显示人的名字。所以在打猎之后我决定尝试制作一个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”
如果我传递字符串而不是@model.Email
和'@ model.Name`,那么帮助程序工作正常,但如何将变量传递给帮助程序?
答案 0 :(得分:1)
尝试像这样打电话给你的帮手:
@Html.PrettyEmailAddress(Model.Email, Model.Name)
需要注意的事项:
M
@
,因为您已经在服务器上你也可能想要取代:
mailToLink.Attributes.Add("mailto", email);
使用:
mailToLink.Attributes.Add("href", string.Format("mailto: {0}", email));
为了达到理想的效果。
答案 1 :(得分:0)
试试这个:
<a href="mailto:@Model.Email">@Html.ValueFor(model=>model.Email)</a>