EditorFor的最小值和最大值

时间:2016-01-06 17:40:15

标签: asp.net asp.net-mvc razor asp.net-mvc-5

我一直在尝试使用此代码设置EditorFor上的最小值和最大值:

<label id="LbStartYear" style="width: 200px">From Date: @Html.EditorFor(model => model.SelectedYearBegin, new { htmlAttributes = new { @min = "0", @max = "20" } })</label>

但没有成功。永远不会设置最小值和最大值。我尝试删除020中的引文,也尝试使用和不使用@

有什么想法吗?

1 个答案:

答案 0 :(得分:15)

只需在模型属性上使用Range DataAnnotation属性。通过使用此属性,您可以限制用户输入不属于该范围的任何其他数字。

导入以下命名空间 -

using System.ComponentModel.DataAnnotations;
using System.ComponentModel;

然后使用Range属性

装饰您的媒体资源
[Range(0,20)]
public int SelectedYearBegin { get; set; }

有关范围属性的更多信息 - https://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.rangeattribute(v=vs.110).aspx

您可以通过在Web.config中启用客户端验证 -

 <add key="ClientValidationEnabled" value="true"/> 
 <add key="UnobtrusiveJavaScriptEnabled" value="true"/> 

确保链接JQuery不引人注意并验证JS文件。

或者,如果您仍想为min设置maxEditorFor,则需要获得MVC 5.1或更高版本。下面的代码适用于MVC 5.1及更高版本。

@Html.EditorFor(model => model.SelectedYearBegin, new { htmlAttributes = new { @min = "0", @max = "20" } })

如果你不想使用MVC 5.1及更高版本,那么只需使用TextBoxFor -

@Html.TextBoxFor(model => model.SelectedYearBegin, new { type = "number", min = 0, max = 100 })