在 MetaData 部分中使用 AdditionalMetadata class

Using AdditionalMetadata in MetaData partial class

我已按照 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

首先,您必须将 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>