【问题标题】:Using DataAnnotations with a Linq generated class将 DataAnnotations 与 Linq 生成的类一起使用
【发布时间】:2013-01-03 06:57:08
【问题描述】:

我按照我在网上找到的步骤来执行此操作,但它似乎不起作用。这是一个使用 Razor2 的 MVC4 项目。

这是我创建的元数据类

public class LedgerItemValidation
{
    [DisplayFormat(DataFormatString = "{0:#,##0.00#}", ApplyFormatInEditMode = true)]
    public decimal Amount { get; set; }

    [DataType(DataType.Date), DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
    public DateTime StartDate { get; set; }
}

这是我创建的部分类,因此我可以应用这些

[MetadataType(typeof(LedgerItemValidation))]
public partial class LedgerItem
{
    ... other stuff
}

这是我在页面上显示的地方

@model CF.Models.LedgerItem

@Html.TextBoxFor(m => m.Amount)

从我在网上看到的情况来看,这应该是我所要做的。在我测试时,我也给了它一个 DisplayName,但它也没有显示出来。

不确定我在这里缺少什么。

【问题讨论】:

  • 是否需要显示 Amount 的验证错误?
  • 你能详细解释一下什么不起作用吗?
  • @EstebanElverdin 小数点到小数点后很多位,日期时间显示时间和日期。

标签: asp.net-mvc razor asp.net-mvc-4 data-annotations razor-2


【解决方案1】:

DisplayFormat 仅适用于 EditorForDisplayFor。使用

@Html.EditorFor(m => m.Amount)

【讨论】:

  • 这就是我所缺少的。
【解决方案2】:

你可以通过使用下面的部分类来做到这一点。

  1. Linq to SQL 生成的对象类是部分的

  2. 为对象创建自己的分部类

  3. [MetadataType(typeof(YourDataAnnotationIncludedClassName))] 放在您创建的部分类上。

示例代码:

Linq to SQL 生成类

public partial class Provider 
{
   public string Name { get; set; }
}

使用您要验证的每个字段的元数据创建您自己的 MetaData 类

public class MyMetaDataProviderClass
{
    [Required]
    [DisplayName("Provider Name")]
    public string Name { get; set; }
}

为要添加元数据的 Object 类创建另一个 Partial Class,这里是 Provider 类:

[MetadataType(typeof(MyMetaDataProviderClass))]
public partial class Provider { }

重要提示:您无需在类中指定任何内容,只需指定元数据类型即可。

然后你可以在你的 View 喜欢下面使用它:

@Html.TextBoxFor(m => m.Name)

编辑

对于您的小数问题,可以如下处理。

@Html.TextBox(m => Math.Round(m.Amount,2))

   @Html.EditorFor(m => m.Amount)

对于您的日期问题:

@Html.EditorFor(m => m.StartDate)

补充说明:

DisplayFormat 仅适用于 EditorFor 和 DisplayFor 助手

希望对你有帮助。

【讨论】:

  • 我不确定你是否看过我的问题,但这正是我所做的。
  • @Jhorra 请检查我的编辑部分
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-16
  • 2010-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多