1

我有一个 MVC 4 项目,我想在其中使用类似于 的功能DisplayFromat,但设置 aDataFormatString是不够的。我想调用一个函数来格式化字符串。那可能吗?

我已经测试了继承DisplayFormat,但这只是让我设置DataFormatString.

我看过 customizing DataAnnotationsModelMetadataProvider,但我不知道如何让它调用自定义函数进行格式化。

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

4

2 回答 2

0

最简单的方法是在模型上公开一个只读属性:

public class Model{
    public int mydata{get; set;}
    public string formattedDate{
        get{
            string formattedval;
            // format here
            return formattedval;
        };
    }
}
于 2013-05-13T13:33:56.453 回答
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; }
于 2014-02-24T17:28:03.983 回答