我有一个MVC 4项目,我希望使用与DisplayFromat
类似的功能,但设置DataFormatString
是不够的。我想调用一个函数来格式化字符串。这可能吗?
我已经测试了继承DisplayFormat
,但这只是让我设置DataFormatString
。
我看过自定义DataAnnotationsModelMetadataProvider
,但我不知道如何让它调用自定义函数进行格式化。
我的具体情况是我需要将整数201351格式化为" w51 2013"。我无法想出那样做的格式字符串。
答案 0 :(得分:0)
最简单的方法是在模型上公开只读属性:
public class Model{
public int mydata{get; set;}
public string formattedDate{
get{
string formattedval;
// format here
return formattedval;
};
}
}
答案 1 :(得分:0)
您可以创建自定义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; }