我有一个自定义编辑器模板,可以将简单的文本框转换为数字框(对于类型编号)。但是,我试图从DefaultValue
属性
在模型中我有
[DisplayName("Initial Token Count")]
[DataType("Number")]
[Required]
[DefaultValue(5)]
public int InitialTokenCount { get; set; }
我有的EditorTemplate
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class = "text-box single-line", type = "number" })
<script type="text/javascript">
$(document).ready(function () {
$("#@Html.NameFor(c => c)").kendoNumericTextBox({ decimals: 0, format: "#"});
});
</script>
现在,当视图呈现时,如果没有定义值,则默认为0
,但我希望默认为5
DefaultValue(5)
我错过了一些要求实现这一目标的电话吗?
答案 0 :(得分:1)
您可以使用反射来实现此目的:
@{
object value;
if(Model == null)
{
value = ((System.ComponentModel.DefaultValueAttribute)
ViewData.ModelMetadata.ContainerType.GetProperty(ViewData.ModelMetadata.PropertyName).
GetCustomAttributes(typeof(System.ComponentModel.DefaultValueAttribute), false)[0]).Value;
}
else
{
value = ViewData.TemplateInfo.FormattedModelValue;
}
}
@Html.TextBox("", @value, new { @class = "text-box single-line", type="number"})
编辑:改了一下,以便它适用于现有的模型值。