2016-09-27 27 views
1

使用AdditionalMetadata我按照在https://www.asp.net/mvc/overview/getting-started/database-first-development/enhancing-data-validation的例子将数据添加注解MetaData.cs在元数据部分类

我试图使用AdditionalMetaData,这样我可以传递一个变量到EditorTemplate。我试过了:

[AdditionalMetadata("VariableName", "VariableValue")] 
[Display(Name = "Last Name")] 
[StringLength(50)] 
public string LastName; 

我希望这将以与StringLength元数据类似的方式应用。

我是否需要修改PartialClasses.cs?目前,这将模型和元数据类关联在一起:

[MetadataType(typeof(StudentMetadata))] 
public partial class Student 
{ 
} 

任何帮助将不胜感激。

更新:

MetaData.cs包含:

[AdditionalMetadata("VariableName", "VariableValue")] 
[Display(Name = "Last Name")] 
[StringLength(50)] 
public string LastName; 

PartialClasses.cs包含:

[MetadataType(typeof(StudentMetadata))] 
public partial class Student 
{ 
} 

Student.cs包含:

public string LastName{ get; set; } 

我不想修改Students.cs - 因为我将来可能需要重新生成。我曾希望在MetaData.cs中添加AdditionalMetaData。

回答

0

首先,您必须声明LastName作为属性。

[AdditionalMetadata("VariableName", "VariableValue")] 
[Display(Name = "Last Name")] 
[StringLength(50)] 
public string LastName { get; set; } 

不需要做的PartialClasses.cs。你的任何变化必须正确检索它的视图,如下图所示。

<h2> 
    @ModelMetadata.FromLambdaExpression(x => x.LastName, ViewData).AdditionalValues["VariableName"] 
</h2> 
+0

谢谢,但是我得到的错误: 属性'AdditionalMetadata'在此声明类型无效。它只对'类,属性,索引器,接口'声明有效。 –

+0

请参阅更新。 – Sampath

+0

是现在工作还是什么? – Sampath