如何使用 Html.EditorFor 内的 DefaultValueAttribute 值?
How to use DefaultValueAttribute value within Html.EditorFor?
在模型中使用 ASP.Net ComponentModel
和 DataAnnotations
,我有:
[Required]
[Range(1, 50000, ErrorMessage = "Please specify the number of foos.")]
[DefaultValue(1)]
public int Foo { get; set; }
使用以下方式呈现:
@Html.LabelFor(model => model.Foo)
@Html.EditorFor(model => model.Foo)
@Html.ValidationMessageFor(model => model.Foo, "", new { @class = "text-danger" })
但是呈现的输入字段中的值是 0
而不是 DefaultValueAttribute
指示的 1
。
研究这个,this answer提供了两个解决方案:
- 通过定义新模型并传递给视图来设置控制器中的值(推荐,并且有效,但忽略我在 DefaultValueAttribute
中的值
- 直接使用
@value = "1"
在视图中设置值(不推荐,因为它违反了 MVC 约定)
是否可以将 DefaultValueAttribute
的值自动渲染到 HTML 控件中?例如。 @Html
辅助方法读取 DefaultValueAttribute?
似乎链接问题中的答案省略了一些重要选项:使用模型的构造函数,或默认初始化 属性:
public class FooModel
{
public FooModel()
{
Foo = 1;
}
// Or
[Required]
[Range(1, 50000, ErrorMessage = "Please specify the number of foos.")]
public int Foo { get; set; } = 1;
}
随心所欲。相关知识不会从您的模型泄漏到控制器中,如果未被覆盖,视图当然会使用该值,无论是在构建模型时还是在之后设置 属性。
在模型中使用 ASP.Net ComponentModel
和 DataAnnotations
,我有:
[Required]
[Range(1, 50000, ErrorMessage = "Please specify the number of foos.")]
[DefaultValue(1)]
public int Foo { get; set; }
使用以下方式呈现:
@Html.LabelFor(model => model.Foo)
@Html.EditorFor(model => model.Foo)
@Html.ValidationMessageFor(model => model.Foo, "", new { @class = "text-danger" })
但是呈现的输入字段中的值是 0
而不是 DefaultValueAttribute
指示的 1
。
研究这个,this answer提供了两个解决方案:
- 通过定义新模型并传递给视图来设置控制器中的值(推荐,并且有效,但忽略我在 DefaultValueAttribute 中的值
- 直接使用
@value = "1"
在视图中设置值(不推荐,因为它违反了 MVC 约定)
是否可以将 DefaultValueAttribute
的值自动渲染到 HTML 控件中?例如。 @Html
辅助方法读取 DefaultValueAttribute?
似乎链接问题中的答案省略了一些重要选项:使用模型的构造函数,或默认初始化 属性:
public class FooModel
{
public FooModel()
{
Foo = 1;
}
// Or
[Required]
[Range(1, 50000, ErrorMessage = "Please specify the number of foos.")]
public int Foo { get; set; } = 1;
}
随心所欲。相关知识不会从您的模型泄漏到控制器中,如果未被覆盖,视图当然会使用该值,无论是在构建模型时还是在之后设置 属性。