我一直在尝试使用此代码设置EditorFor
上的最小值和最大值:
<label id="LbStartYear" style="width: 200px">From Date: @Html.EditorFor(model => model.SelectedYearBegin, new { htmlAttributes = new { @min = "0", @max = "20" } })</label>
但没有成功。永远不会设置最小值和最大值。我尝试删除0
和20
中的引文,也尝试使用和不使用@
。
有什么想法吗?
答案 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
设置max
和EditorFor
,则需要获得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 })