1

我有一个MVC 4项目,我想使用类似于DisplayFromat的功能,但设置DataFormatString是不够的。我想调用一个函数来格式化字符串。那可能吗?自定义DisplayFormat超出DataFormatString

我测试了继承DisplayFormat,但只是让我设置DataFormatString

我已经看过定制DataAnnotationsModelMetadataProvider,但我看不到如何让它调用格式化自定义函数。

我的特殊情况是我需要将整数201351格式化为“w51 2013”​​。我无法想出一个格式化字符串。

回答

0

最简单的方法是在你的模型暴露出只读属性:

public class Model{ 
    public int mydata{get; set;} 
    public string formattedDate{ 
     get{ 
      string formattedval; 
      // format here 
      return formattedval; 
     }; 
    } 
} 
+1

在我们的情况下,由于各种原因,我们宁愿使用数据的注释做格式化。 – 2013-05-13 13:48:11

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; } 
+0

这不是原始问题的答案 – BrilBroeder 2015-07-15 19:18:38