首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >DisplayFormat ApplyFormatInEditMode

DisplayFormat ApplyFormatInEditMode
EN

Stack Overflow用户
提问于 2012-11-06 15:15:50
回答 2查看 13K关注 0票数 2

我在C#中使用MVC 3,我有一个具有以下属性的类

代码语言:javascript
运行
复制
[DisplayFormat(DataFormatString = "{0:dd MMM yyyy}", ApplyFormatInEditMode = true)]

当用户在EDIT MODE中时,我想执行验证。

数据库中的数据以datetime类型存储,格式如下

代码语言:javascript
运行
复制
  6/15/2009 1:45:30 PM

我收到这个错误

错误字符串格式不正确。

我相信问题出在

代码语言:javascript
运行
复制
DataFormatString = "{0:dd MMM yyyy}"

知道怎么修吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-06 21:01:14

DisplayFormat属性实际上仅用于显示值。如果您设置了ApplyFormatInEditMode,那么它所要做的就是在textbox (用于编辑)中显示数据的内容时,也将该格式应用于数据内容。这与验证无关。

如果要使用指定的格式验证输入,则可能必须创建自己的ValidationAttribute,并使用DateTime.ParseExact()尝试确保输入符合您所期望的格式。唯一的好处是,除非您编写它,否则它不会有一个伴随的客户端验证逻辑。

我还没有对此进行充分的测试,但应该给你一个开始。

代码语言:javascript
运行
复制
public class DateTimeFormatAttribute : ValidationAttribute
{
   public int Format { get; set; }

   public override bool IsValid(object value)
   {
        if (value == null)
            return true;

        DateTime val;
        try
        {
            val = DateTime.ParseExact(value.ToString(), Format, null);
        }
        catch(FormatException)
        {
            return false;
        }

        //Not entirely sure it'd ever reach this, but I need a return statement in all codepaths
        return val != DateTime.MinValue;
   }
}

那这只是一个使用它的问题。[DateTimeFormat(Format = "dd MMM yyyy")]

更新:对不起,我没看清楚你的问题。它之所以抱怨回发上的数据,是因为您试图使用的格式不是标准格式。您最好在网上实现一个常用的日期选择器,在填充字段时使用,而不是让它手工编辑,或者期望像这样的非标准格式。自定义显示格式非常适合显示,但是如果您想要使用默认DateTime.Parse不理解的自定义格式,则必须编写自己的ModelBinder,我相信这是我没有做的事情,或者您可以将视图模型上的数据类型更改为string,并在操作方法中自己解析它(您仍然可以使用我在本例中提供的验证程序)。要消除错误(但在编辑模式下还将删除自定义格式),您必须删除ApplyFormatInEditMode属性。

票数 6
EN

Stack Overflow用户

发布于 2012-11-06 20:04:11

0:dd MMM yyyy将期望一个类似于06 JUN 2009的字符串,而不是6/15/2009

在获取String Not in Correct Format错误时,如何输入字符串?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13253964

复制
相关文章

相似问题

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