Asp.net mvc 如何在视图上下文之外获取ModelMetadata?
我需要导出某种类型的数据(构建一个文件),这样数据就不会由视图生成(渲染),而是由纯C#代码生成(渲染),而不包含视图。但我需要一些模型元数据信息Asp.net mvc 如何在视图上下文之外获取ModelMetadata?,asp.net-mvc,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 3,我需要导出某种类型的数据(构建一个文件),这样数据就不会由视图生成(渲染),而是由纯C#代码生成(渲染),而不包含视图。但我需要一些模型元数据信息 我还询问如何在单元测试内部以及外部视图中构建模型元数据?假设您有一个包含一些元数据的视图模型: public class MyViewModel { [DisplayName("Bar")] public string Foo { get; set; } } 您可以如下方式检索此元数据: ModelMetadata metadata
我还询问如何在单元测试内部以及外部视图中构建模型元数据?假设您有一个包含一些元数据的视图模型:
public class MyViewModel
{
[DisplayName("Bar")]
public string Foo { get; set; }
}
您可以如下方式检索此元数据:
ModelMetadata metadata = ModelMetadata.FromLambdaExpression<MyViewModel, string>(
x => x.Foo,
new ViewDataDictionary<MyViewModel>()
);
Assert.AreEqual("Bar", metadata.DisplayName);
如果要获取子属性的元数据,只需指定属性的名称:
var type = typeof(MyViewModel);
var metadata = ModelMetadataProviders.Current.GetMetadataForProperty(null, type, "Foo");
创建域模型并通过控制器对其进行操作。我不确定你在问什么,你能试着更清楚一点吗?Darin(下面)的答案非常接近我的需要,但我不能调用由“generic param”为特定类型编译的FromLambdaExpression()。我只能在运行时(动态)确定类型。不幸的是,我只能在运行时确定类型。调用FromLambdaExpression()的方法是否只有一个类型类,或者手动构建一个表达式?
var type = typeof(MyViewModel);
var metadata = ModelMetadataProviders.Current.GetMetadataForProperty(null, type, "Foo");