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

asp.net-mvc – 使用EditorFor时向ModelMetadata.AdditionalValu

发布时间:2020-12-16 03:45:04 所属栏目:asp.Net 来源:网络整理
导读:如果我有一个约定来更改编辑器并设置一些值 public class MetadataProvider : DataAnnotationsModelMetadataProvider{ protected override ModelMetadata GetMetadataForProperty(Funcobject modelAccessor,Type containerType,System.ComponentModel.Proper
如果我有一个约定来更改编辑器并设置一些值

public class MetadataProvider : DataAnnotationsModelMetadataProvider
{
    protected override ModelMetadata GetMetadataForProperty(Func<object> modelAccessor,Type containerType,System.ComponentModel.PropertyDescriptor propertyDescriptor)
    {
        var meta = base.GetMetadataForProperty(modelAccessor,containerType,propertyDescriptor);
        if (IsNumericType(propertyDescriptor.PropertyType))
        {
            meta.TemplateHint = "Number";

            var attr = propertyDescriptor.Attributes.OfType<RangeAttribute>().FirstOrDefault();
            if (attr != null)
            {
                meta.AdditionalValues["min"] = attr.Minimum;
                meta.AdditionalValues["max"] = attr.Maximum;
            }
        }
        return meta;
    }
    //...
}

然后我可以在模板中获取其他值

@{
    var min = ViewData.ModelMetadata.AdditionalValues["min"];
    var max = ViewData.ModelMetadata.AdditionalValues["max"];
}

但是,如果我使用相同的模板

@Html.EditorFor(x => x.Number,new { min = 1,max = 10 })

然后我应该得到这样的价值观

@{
    var min = ViewData["min"];
    var max = ViewData["max"];
}

我可以以某种方式合并additionalViewData和ModelMetadata.AdditionalValues,以便我可以从一个地方获取值?

解决方法

老实说,我没有试过看看AdditionalValues是否被正确拉出,但是你的视图中为内置提供了什么?

@using System.Web.Mvc

    @{
         var meta = ModelMetadata.FromLambdaExpression(model => model,ViewData);
     }

(编辑:李大同)

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

    推荐文章
      热点阅读