asp.net-mvc - 通过 ViewModel 类型获取不显眼的验证属性
问题描述
我需要类似的东西
var dict = html.GetUnobtrusiveValidationAttributes<ViewModel1>(propName);
我让它像这样工作:
public static IHtmlString GetVld<TModel>(this HtmlHelper html)
{
...
foreach (var prop in typeof(TModel).GetProperties())
{
var attributes = new Dictionary<string, object>();
Func<string, ModelMetadata, IEnumerable<ModelClientValidationRule>> ClientValidationRuleFactory
= (name, metadata) => ModelValidatorProviders.Providers.GetValidators(metadata ?? ModelMetadata.FromStringExpression(name, html.ViewData), html.ViewContext).SelectMany(v => v.GetClientValidationRules());
var clientRules = ClientValidationRuleFactory(prop.Name, null);
UnobtrusiveValidationAttributesGenerator.GetValidationAttributes(clientRules, attributes);
唯一的问题是我必须在视图中调用@model
它才能使其工作,否则attributes
将始终为空
@model MyVM // I want to make it work without this line
@Html.GetVld<MyVM>()
我尝试做:
var html2 = new HtmlHelper<TModel>(html.ViewContext, html.ViewDataContainer)
并使用html2
而不是,html
但它无济于事。
解决方案
推荐阅读
- c++ - C++ 在编译时使用已删除的函数
- web-scraping - 如果加载它的代码隐藏在 Google 跟踪代码管理器中,有没有办法以编程方式扫描网页是否存在聊天机器人?
- python - 使用正则表达式匹配字符串后的值无效
- android - 无法弄清楚如何将此字段保存到数据库中。您可以考虑为其添加类型转换器
- java - 使用 java 从 XML 文件中获取节点的所有信息
- java - 图像加载,JavaFX
- python - 大熊猫 idxmin 的 Numpy 模拟(最小值索引)?
- c# - 可绘制“无法解析此资源 URL”
- javascript - 为什么 useEffect 没有被触发?
- javascript - 关于访问数组列的基本问题