1

我有一个包含此属性的 ViewModel:

[Display(Name = "Email")]        
[DataType(DataType.EmailAddress)]        
[DisplayFormat(NullDisplayText = "Unavailable")]        
public string Email { get; set; }

有没有办法DataType动态设置属性以将其显示为DataType.Text如果它显示“不可用”(the NullDisplayText),否则将其显示为可点击DataType.EmailAddress

现在,当属性值为 null 时,它显示为Unavailable,而我想将其显示为 Unavailable。

4

1 回答 1

1

可以自定义显示模板EmailAddress。为此:

  1. 在下创建一个DisplayTemplates文件夹Views/Shared
  2. EmailAddress.cshtmlDisplayTemplates文件夹中创建文件
  3. 将以下内容添加到文件中并保存:

    @model string
    @if (string.IsNullOrEmpty(Model))
    {
        @ViewData.TemplateInfo.FormattedModelValue
    }
    else
    {
        <a href="mailto:@Model">@ViewData.TemplateInfo.FormattedModelValue</a>
    }
    

从现在开始,当您为属性使用[DataType(DataType.EmailAddress)]属性时,EmailAddress将使用您的显示模板。

您可以在其中放入任何逻辑来进行自定义渲染。

注意:如果要将模板限制为特定视图,假设仅用于MyModel视图,然后EmailAddressViews\MyModel\DisplayTemplates.

于 2020-02-04T15:58:44.740 回答