问题标签 [modelmetadata]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
234 浏览

asp.net-core - ASP.NET Core 中的 AssociatedMetadataProvider

我在哪里可以找到.Net Core 中的AssociatedMetadataProvider ?或者有没有办法在 DefaultModelMetadataProvider中实现GetTypeDescriptor ?

在 MVC 5 中,DataAnnotationsModelMetadataProvider 继承自 AssociatedMetadataProvider,它有一个 GetTypeDescriptor 方法。

似乎这个类(AssociatedMetadataProvider)被完全删除了:-(

任何建议都会非常好。


我是如何在 Mvc 5 中做到的?

登记:

全球.asax

0 投票
1 回答
152 浏览

c# - 在 ASP.NET MVC 中动态修改 DataType 属性

我有一个包含此属性的 ViewModel:

有没有办法DataType动态设置属性以将其显示为DataType.Text如果它显示“不可用”(the NullDisplayText),否则将其显示为可点击DataType.EmailAddress

现在,当属性值为 null 时,它显示为Unavailable,而我想将其显示为 Unavailable。

0 投票
2 回答
640 浏览

asp.net-core - 从标签助手中的模型元数据访问自定义属性

我正在 .net Core 中开发一个新项目,之前一直在使用 .net Framework。

我希望为布尔属性生成 html 选择元素,但使用自定义值而不是 True 和 False(主要是“是”和“否”)。在以前的项目中,我使用了以下方法:

为布尔值创建自定义属性:

在我的模型中使用它:

然后在编辑器模板中,我可以访问这些值以添加到选择中:

我现在正尝试在 .net 核心中做类似的事情,这次使用标签助手而不是编辑器模板。

我了解核心不支持按上述方式设置 AdditionalValues?

我找到的最接近的是这个答案: Getting property attributes in TagHelpers

我的标签助手代码看起来像这样 currenty(输出 p 只是为了测试):

但是我无法让它工作,因为 Source.Metadata.ContainerType.GetProperty(Source.Name).GetCustomAttributes() 返回 null。

令人讨厌的是,在监视窗口中调试和查看 Source.Metadata 时,我可以准确地看到我想在 Source.Metadata.Attributes 下访问的内容——但这似乎不是在调试器之外暴露的东西。

为帖子的长度道歉 - 任何指针都将不胜感激(包括告诉我我做错了!)

0 投票
0 回答
162 浏览

c# - 有没有办法有效地使 [ModelMetadataType] 跨多个程序集工作?

我有一个 ASP.NET Core 3.1 Web API 应用程序,它的端点用于输入和输出数据的各种模型。因为其他 C# 应用程序将与这个应用程序进行通信,所以我决定将这些共享模型移动到所有应用程序都可以使用的 NuGet 包中。

像往常一样,这些模型的属性用各种数据注释属性进行修饰,例如[Required],以允许标准模型验证以防止无效输入。它们还装饰有特定的 ASP.NET MVC Core 属性,例如[FromQuery],以允许它们正确绑定到传入请求。

但是,我不希望 ASP.NET MVC Core 属性出现在共享的 NuGet 包中。首先,因为它们只与 Web API 相关,所以在此应用它们是有意义的;其次,因为将它们包含在 NuGet 中会引入各种与 ASP.NET Core 相关的依赖项,这些依赖项与此包的其他使用者无关。

ASP.NET Core 具有[ModelMetadataType]涵盖这一点的属性 - 但仅当有问题的模型位于同一程序集中时。是否有一种内置或简单的方法可以[ModelMetadataType]跨不同的程序集工作,而无需子类化和/或重新声明模型?

(我完全清楚,允许这样做会通过允许下游消费者潜在地改变上游模型的行为而产生安全风险,但由于这些模型和这个包以及有问题的应用程序都是我工作的公司内部的,所以它不是在这种情况下不是问题。)

说明基本概念的代码示例:

0 投票
1 回答
182 浏览

entity-framework-core - 如何获取在 HasComment 中设置的 EF Core 模型配置实体属性注释作为 html 标题属性

尝试将 html 元素的 title 属性设置为传递给 entity.Property().HasComment(comment) 方法的参数。

我试过没有运气:

当 OnModelCreating 方法设置以下内容时,该值为 null:

此评论是否可用作 html 属性?

谢谢

0 投票
0 回答
68 浏览

asp.net-core - 如何使用编辑器模板渲染带有 Razor 的菜单?

我有一个基于 asp.net core 3.1 的应用程序。我喜欢利用 Display-Templates 和 Editor-Templates 来创建编辑器视图。我正在尝试找出如何使用编辑器模板为菜单创建编辑器模板的最佳方法。

我的第一个想法是为菜单创建一个通用视图模型,然后可以使用自定义编辑器模板轻松呈现

在第一次尝试中,我创建了一个看起来像这样的通用视图模型

然后我希望在像这样的其他视图模型中使用它

我想我可以让上面的代码工作......但是,我试图找出一种方法来将任何ValiationAttributesState属性传递到State.Value属性。

例如,如果State装饰有RequiredAttribute怎么办?换句话说,如果我的视图模型看起来像这样

在这种情况下,要使模型状态有效,StateProperty 不能为 null,并且该属性State.Value还必须有一个值。

问题是,我怎样才能将所需的属性传递给属性,Value而无需创建多个 menu-vm 之类的RequiredMenuViewModeland OptionalMenuViewModel

我考虑过创建IDisplayMetadataProvider. 但即便如此,我也不确定如何将验证属性从父属性传递给子属性。

0 投票
1 回答
110 浏览

asp.net-core - 如何使用属性将项目添加到具有 ASP.NET Core 的附加值集合 ModelMetadata?

C#我有一个基于 ASP.NET Core 5.0 框架编写的应用程序。我正在寻找将项目添加到ModelMetadata.AdditionalValues集合中的正确方法。

在 ASP.NET MVC 5 中,我们有IMetadataAware ,我们在其中使用除了Attribute标记来将项目添加到 ModelMetadata.AdditionalValues集合中。但是,对于 ASP.NET Core,则 IMetadataAware不再存在。

0 投票
0 回答
95 浏览

asp.net - 在 asp.net core 3.1 mvc 中元数据感知的替代方案是什么?

在此处输入图像描述

如何在 asp.net core 3.1 mvc 中使用模型元数据和元数据感知的附加属性属性?