Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ASP.NET MVC中动态修改数据类型属性_C#_Asp.net_Asp.net Mvc_Razor_Modelmetadata - Fatal编程技术网

C# 在ASP.NET MVC中动态修改数据类型属性

C# 在ASP.NET MVC中动态修改数据类型属性,c#,asp.net,asp.net-mvc,razor,modelmetadata,C#,Asp.net,Asp.net Mvc,Razor,Modelmetadata,我有一个包含此属性的ViewModel: [Display(Name = "Email")] [DataType(DataType.EmailAddress)] [DisplayFormat(NullDisplayText = "Unavailable")] public string Email { get; set; } 是否有方法动态设置数据类型属性,以将其显示为数据类型.Text如果它显示为“不可用”(即NullDisplayText),

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

[Display(Name = "Email")]        
[DataType(DataType.EmailAddress)]        
[DisplayFormat(NullDisplayText = "Unavailable")]        
public string Email { get; set; }
是否有方法动态设置
数据类型
属性,以将其显示为
数据类型.Text
如果它显示为“不可用”(即
NullDisplayText
),否则将其显示为可单击的
数据类型.EmailAddress


现在,当属性值为null时,它显示为like,而我想显示为不可用。

您可以自定义
电子邮件地址的显示模板。为此:

  • Views/Shared
    下创建一个
    DisplayTemplates
    文件夹
  • DisplayTemplates
    文件夹中创建
    EmailAddress.cshtml
    文件
  • 将以下内容添加到文件并保存:

    @model string
    @if (string.IsNullOrEmpty(Model))
    {
        @ViewData.TemplateInfo.FormattedModelValue
    }
    else
    {
        <a href="mailto:@Model">@ViewData.TemplateInfo.FormattedModelValue</a>
    }
    
    @模型字符串
    @if(string.IsNullOrEmpty(Model))
    {
    @ViewData.TemplateInfo.FormattedModelValue
    }
    其他的
    {
    }
    
  • 从现在起,当您为属性使用
    [DataType(DataType.EmailAddress)]
    属性时,将使用您的
    EmailAddress
    显示模板

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


    注意:如果您想将模板限制在特定的视图中,让我们只针对
    MyModel
    视图,然后在
    Views\MyModel\DisplayTemplates

    中创建
    EmailAddress
    模板。您可以自定义电子邮件的显示/编辑器模板。@reza aghaei您可以提供更多详细信息吗?是的,我将发布一个示例。DisplayTemplates和EditorTemplates是电子邮件框架中最有用的扩展点之一意见。如果您在应用解决方案时遇到任何问题,请告诉我:)