C# 在ASP.NET MVC中动态修改数据类型属性
我有一个包含此属性的ViewModel: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),
[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是电子邮件框架中最有用的扩展点之一意见。如果您在应用解决方案时遇到任何问题,请告诉我:)