Mik*_*der 6 asp.net-mvc asp.net-mvc-4
如果我有一个约定来更改编辑器并设置一些值
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;
}
//...
}
Run Code Online (Sandbox Code Playgroud)
然后我可以在模板中获取其他值
@{
var min = ViewData.ModelMetadata.AdditionalValues["min"];
var max = ViewData.ModelMetadata.AdditionalValues["max"];
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用相同的模板
@Html.EditorFor(x => x.Number, new { min = 1, max = 10 })
Run Code Online (Sandbox Code Playgroud)
然后我应该得到这样的价值观
@{
var min = ViewData["min"];
var max = ViewData["max"];
}
Run Code Online (Sandbox Code Playgroud)
我能以某种方式合并additionalViewData和ModelMetadata.AdditionalValues,这样我可以从一个地方获得的价值?
老实说,我还没有尝试查看AdditionalValues 是否正确提取,但在您看来,内置功能为您提供了什么?
@using System.Web.Mvc
@{
var meta = ModelMetadata.FromLambdaExpression(model => model, ViewData);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1983 次 |
| 最近记录: |