加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – GetUnobtrusiveValidationAttributes总是返回一个空集合

发布时间:2020-12-15 22:12:40 所属栏目:百科 来源:网络整理
导读:我有一个通用编辑器div我正在整理.有些字段是必需的,我想添加不显眼的验证.有一个与这些字段关联的视图模型,但它存储在一个集合中,并且该div独立于该集合. 所以我的模型看起来像这样: public class MyViewModel{ public ListGridModel GridModels { get; se
我有一个通用编辑器div我正在整理.有些字段是必需的,我想添加不显眼的验证.有一个与这些字段关联的视图模型,但它存储在一个集合中,并且该div独立于该集合.

所以我的模型看起来像这样:

public class MyViewModel
{
    public List<GridModel> GridModels { get; set;}
}

public class GridModel
{
    [Required]
    public string GridField { get; set; }
}

我的观点看起来像这样:

<div class="EditorDiv">
    @Html.TextBox("GridField")
</div>

根据我的研究,我应该可以做这样的事情:

@{
    var metadata = ModelMetadataProviders.Current.GetMetadataForType(null,typeof(GridModel));
}
@Html.TextBox("myGridField",Html.GetUnobtrusiveValidationAttributes("GridField",metadata))

这编译并运行得很好,但GetUnobtrusiveValidationAttributes总是返回一个空集合.我错过了什么?

解决方法

我的助手也有同样的问题.

如果我有一个ModelName = GridModels [0] .GridField
我称之为方法:

htmlHelper.GetUnobtrusiveValidationAttributes(ModelName)

它返回空字典.

因为我是帮手,如果我用ModelMetadata(由表达式加载)参数调用一个方法,它可以工作:

var ModelMetadata = ModelMetadata.FromLambdaExpression(expression,htmlHelper.ViewData)
htmlHelper.GetUnobtrusiveValidationAttributes(ModelName,ModelMetadata )

最后返回正确的词典:)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读