2

我有一个简单的视图模型

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)

我正在显示整个 Url,我只想显示 LinkName 即类似这样的内容

<a href="http://...">http://...</a>

但我想要这样:

<a href="http://...">LinkName</a>
4

1 回答 1

2

当您使用时,MVC 无法从另一个属性中提取值,DisplayFor因此您有 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)
于 2015-09-12T07:57:33.813 回答