Asp.net mvc 自定义DataFormatString之外的DisplayFormat
我有一个MVC4项目,我想使用类似于Asp.net mvc 自定义DataFormatString之外的DisplayFormat,asp.net-mvc,asp.net-mvc-4,string-formatting,number-formatting,Asp.net Mvc,Asp.net Mvc 4,String Formatting,Number Formatting,我有一个MVC4项目,我想使用类似于DisplayFromat的功能,但是设置DataFormatString是不够的。我想调用一个函数来格式化字符串。可能吗 我已经测试了继承DisplayFormat,但这只允许我设置DataFormatString 我已经研究过自定义数据注释ModelMetadataProvider,但我不知道如何让它调用自定义函数进行格式化 我的特殊情况是需要将整数201351格式化为“w51 2013”。我想不出一个格式字符串可以做到这一点。最简单的方法是在模型上公开只
DisplayFromat
的功能,但是设置DataFormatString
是不够的。我想调用一个函数来格式化字符串。可能吗
我已经测试了继承DisplayFormat
,但这只允许我设置DataFormatString
我已经研究过自定义数据注释ModelMetadataProvider
,但我不知道如何让它调用自定义函数进行格式化
我的特殊情况是需要将整数201351格式化为“w51 2013”。我想不出一个格式字符串可以做到这一点。最简单的方法是在模型上公开只读属性:
public class Model{
public int mydata{get; set;}
public string formattedDate{
get{
string formattedval;
// format here
return formattedval;
};
}
}
您可以创建自定义ValidationAttribute。下面是我用来验证某人选择了下拉值的一些代码
using System.ComponentModel.DataAnnotations;
public sealed class PleaseSelectAttribute : ValidationAttribute
{
private readonly string _placeholderValue;
public override bool IsValid(object value)
{
var stringValue = value.ToString();
if (stringValue == _placeholderValue || stringValue == "-1")
{
ErrorMessage = string.Format("The {0} field is required.", _placeholderValue);
return false;
}
return true;
}
public PleaseSelectAttribute(string placeholderValue)
{
_placeholderValue = placeholderValue;
}
}
然后使用它:
[Required]
[Display(Name = "Customer")]
[PleaseSelect("Customer")]
public int CustomerId { get; set; }
在我们的例子中,出于各种原因,我们更倾向于使用数据注释进行格式化