1

我按照我在网上找到的步骤来执行此操作,但它似乎不起作用。这是一个使用 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 ,但这也没有出现。

不知道我在这里缺少什么。

4

2 回答 2

1

DisplayFormat适用于EditorFor或。DisplayFor采用

@Html.EditorFor(m => m.Amount)
于 2013-01-03T15:54:49.970 回答
0

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

  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 助手

我希望这对你有帮助。

于 2013-01-03T12:51:20.560 回答