首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用EditorFor时向ModelMetadata.AdditionalValues添加值

使用EditorFor时向ModelMetadata.AdditionalValues添加值
EN

Stack Overflow用户
提问于 2013-03-12 19:41:58
回答 1查看 2.3K关注 0票数 6

如果我有一个更改编辑器并设置一些值的约定

代码语言:javascript
复制
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;
    }
    //...
}

然后,我可以获得模板中的附加值

代码语言:javascript
复制
@{
    var min = ViewData.ModelMetadata.AdditionalValues["min"];
    var max = ViewData.ModelMetadata.AdditionalValues["max"];
}

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

代码语言:javascript
复制
@Html.EditorFor(x => x.Number, new { min = 1, max = 10 })

然后我应该像这样得到这些值

代码语言:javascript
复制
@{
    var min = ViewData["min"];
    var max = ViewData["max"];
}

我可以以某种方式合并additionalViewData和ModelMetadata.AdditionalValues,这样我就可以从一个地方获得值了吗?

EN

回答 1

Stack Overflow用户

发布于 2013-12-10 07:19:17

老实说,我没有尝试过查看AdditionalValues是否被正确拉出,但在您看来,它的内置功能为您提供了什么?

代码语言:javascript
复制
    @using System.Web.Mvc

    @{
         var meta = ModelMetadata.FromLambdaExpression(model => model, ViewData);
     }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15360213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档