首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >超越DataFormatString定制DisplayFormat

超越DataFormatString定制DisplayFormat
EN

Stack Overflow用户
提问于 2013-05-13 21:26:21
回答 2查看 395关注 0票数 1

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

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

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

我的特殊情况是,我需要将整数201351格式化为"w51 201351“。我想不出一个能做到这一点的格式字符串。

EN

回答 2

Stack Overflow用户

发布于 2013-05-13 21:33:56

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

代码语言:javascript
复制
public class Model{
    public int mydata{get; set;}
    public string formattedDate{
        get{
            string formattedval;
            // format here
            return formattedval;
        };
    }
}
票数 0
EN

Stack Overflow用户

发布于 2014-02-25 01:28:04

您可以创建自定义ValidationAttribute。下面是我用来验证是否有人选择了下拉值的一些代码。

代码语言:javascript
复制
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;
        }
    }

然后使用它:

代码语言:javascript
复制
[Required]
[Display(Name = "Customer")]
[PleaseSelect("Customer")]
public int CustomerId { get; set; }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16523237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档