我有一个简单的视图模型
public string LinkName { get; set; }
[Display(Name = "Url")]
[DataType(DataType.Url)]
public string Link
{
get
{
return string.Format(/*some link building logic*/);
}
}
但是当我尝试用
显示它时@Html.DisplayFor(m => m.Link)
我正在显示整个网址,我只想显示LinkName,就像这样
<a href="http://...">http://...</a>
但我想这样:
<a href="http://...">LinkName</a>
答案 0 :(得分:2)
当您使用DisplayFor
时,MVC无法从其他属性中提取值,因此您有2个选项。首先,您可以手动构建它:
<a href="@Model.Url">@Model.LinkName</a>
下一个选项是制作自己的类和自定义显示模板。例如:
public class NamedUrl
{
public string Name { get; set; }
public string Url { get; set; }
}
您的新型号:
public class YourModel
{
public NamedUrl MyUrl { get; set; }
}
显示模板(将其放在Views/Shared/DisplayTemplates/NamedUrl.cshtml
中):
@model YourAssembly.NamedUrl
<a href="@Model.Url">@Model.LinkName</a>
现在在您看来,您可以使用:
@Html.DisplayFor(m => m.MyUrl)