我有一個允許用戶輸入時間值的表單(比如,執行某個任務所花費的時間)。業務要求是時間以hh:mm格式或小數格式輸入。在任何一種情況下,都可能有相當多的客戶端JavaScript用於顯示「幫助」 - 顯示總計,針對其他輸入驗證等。格式化ASP.Net中的用戶輸入時間MVC
例如,一個用戶可能輸入「8:30」八小時三十分鐘,而另一個可能輸入「8.5」表示同樣的事情。我正在尋找能讓我將表單/驗證重複保持在最低水平的東西。
什麼是與模型和視圖有關的最好方法?
我有一個允許用戶輸入時間值的表單(比如,執行某個任務所花費的時間)。業務要求是時間以hh:mm格式或小數格式輸入。在任何一種情況下,都可能有相當多的客戶端JavaScript用於顯示「幫助」 - 顯示總計,針對其他輸入驗證等。格式化ASP.Net中的用戶輸入時間MVC
例如,一個用戶可能輸入「8:30」八小時三十分鐘,而另一個可能輸入「8.5」表示同樣的事情。我正在尋找能讓我將表單/驗證重複保持在最低水平的東西。
什麼是與模型和視圖有關的最好方法?
允許這兩種格式的正則表達式不會那麼複雜。我會通過javascript執行這個簡單的驗證客戶端。除此之外,您可能需要爲此添加一些業務驗證(在業務對象級別)。
我用jQuery來創建一個滑塊,它將改變輸入框中正確格式的時間。 在我的查看文件Create.aspx中,將以下jquery函數放置在主體的開始處。
<script>
$(function() {
$("#slider").slider({
value: 9,
min: 0,
max: 1440,
step: 15,
slide: function (event, ui) {
var hours = Math.floor(ui.value/60);
var minutes = ui.value - (hours * 60);
var ampm = "AM";
if (hours == 12) { ampm = "PM"; }
else if (hours == 0) { hours = 12; ampm = "AM"; }
else if (hours > 12) { hours = hours - 12; ampm = "PM"; }
if (hours < 10) hours = '0' + hours;
if (minutes < 10) minutes = '0' + minutes;
$("#work_StartTime").val(hours + ':' + minutes + ' ' + ampm);
}
});
});
</script>
然後在同一頁的正文中放置一個div在文本框附近用於時間輸入。一個滑塊將顯示在該div
<div class="editor-field">
<%: Html.EditorFor(model => model.work.StartTime)%>
<div id="slider"></div>
<%: Html.ValidationMessageFor(model => model.work.StartTime)%>
</div>
這會給你一個滑塊。在上面的JavaScript代碼中,更改步驟:15,使增量爲15分鐘。 這顯然是一個客戶端驗證。服務器端驗證當然也應該被執行。