Nếu tôi có một quy ước để thay đổi biên tập và thiết lập một số giá trịThêm giá trị cho ModelMetadata.AdditionalValues khi sử dụng EditorFor
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;
}
//...
}
Sau đó, tôi có thể nhận được các giá trị bổ sung trong mẫu
@{
var min = ViewData.ModelMetadata.AdditionalValues["min"];
var max = ViewData.ModelMetadata.AdditionalValues["max"];
}
Tuy nhiên , nếu tôi sử dụng cùng một mẫu như thế này
@Html.EditorFor(x => x.Number, new { min = 1, max = 10 })
Sau đó, tôi sẽ nhận được các giá trị như này
@{
var min = ViewData["min"];
var max = ViewData["max"];
}
Bằng cách nào đó tôi có thể kết hợp các giá trị bổ sungDataView và ModelMetadata.AdditionalValues để tôi có thể nhận được các giá trị từ một nơi?
Bạn có nói rằng bạn không thể nhận các giá trị từ 'Chế độ xem dữ liệu' trong chế độ xem Mẫu không? –
Tôi không hiểu câu hỏi của bạn. ViewData và ModelMetadata.AdditionalValues là hai thứ khác nhau. ViewData là thuộc tính của Controller và ViewPage. AdditionalValues là một tài sản của ModelMetadata. Tất nhiên, chúng không thể được hợp nhất. Nếu bạn muốn hiển thị giá trị tối thiểu và tối đa của Thuộc tính phạm vi, tôi khuyên bạn nên tạo Trình trợ giúp Html. – ataravati