我按照我在网上找到的步骤执行此操作,但似乎无法正常工作。这是一个使用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,但它也没有出现。
不确定我在这里缺少什么。
答案 0 :(得分:1)
DisplayFormat
仅适用于EditorFor
或DisplayFor
。使用
@Html.EditorFor(m => m.Amount)
答案 1 :(得分:0)
您可以使用如下的部分类来完成此操作。
Linq to SQL生成的对象类是部分
为对象创建自己的分部类
将[MetadataType(typeof(YourDataAnnotationIncludedClassName))]
放在您创建的分部上。
示例代码:
Linq to SQL Generated Class
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 { }
重要提示:您不需要在类中指定任何内容,只需要指定元数据类型。
然后您可以在下面的查看中使用此功能:
@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助手
我希望这会对你有所帮助。