微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我有一个通用编辑器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 )

最后返回正确的词典:)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐