是否有一個接觸點,我可以在ASP.NET MVC5.2.2中使用擴展生成的範圍約束整數屬性的HTML一個視圖模型?MVC擴展Html.EditorFor(int)與HTML5最小值取自[範圍]屬性
我有一個視圖模型類的整數屬性,其範圍將被約束在1和999之間。我想使用HTML5 min
和max
屬性,以便瀏覽器提供的編輯器不讓用戶輸入超出該範圍的值。
例如在Chrome中,<input type="number" min="1" max="999" />
爲我提供了一個限制值爲1到999的微調器的字段。
當前,jquery不顯眼驗證正在強制執行規則,突出顯示超出範圍的值,但如果微調器首先不會創建無效值。
ViewModel類:
public class MyViewModel
{
[Required]
[Range(1, 999)]
public int? ValueInRange
{
get;
set;
}
}
CSHTML爲ValueInRange編輯:
@Html.LabelFor(m => m.ValueInRange)
@Html.EditorFor(m => m.ValueInRange)
@Html.ValidationMessageFor(m => m.ValueInRange)
生成的HTML:
<input type="number" value="0" id="ValueInRange" name="ValueInRange"
class="form-control text-box single-line"
data-val="true"
data-val-number="The field ValueInRange must be a number."
data-val-range="Please select a value between 1 and 999"
data-val-range-max="999"
data-val-range-min="1"
data-val-required="ValueInRange is required" />
是否有任何現有的方式來增加min
和max
屬性的生成輸出可以獲得在th中聲明的值e屬性的Range屬性?我知道我可以手動添加這些屬性作爲additionalViewData
參數EditorFor
的一部分,但這是重複的,並且提供了cshtml和viewmodel代碼之間的漂移能力。
我寧願沒有從頭開始編寫一個EditorFor模板.....
不使用內置模板(您需要使用'@ Html.EditorFor(m => m.GroupSize,new {htmlAttributes = new {min = 1,max = 999}})'對其進行硬編碼。你可以編寫自己的擴展方法,從'[Range]'中讀取值並添加'min'和'max'屬性,或者你可以使用javascript/jQuery讀取'data-val- *'屬性並添加'min'和'max'屬性到html –
我喜歡jQuery方法 - 在我看來,這個評論是值得回答的。謝謝。 –