2011-10-11 49 views
0

我有一個允許用戶輸入時間值的表單(比如,執行某個任務所花費的時間)。業務要求是時間以hh:mm格式或小數格式輸入。在任何一種情況下,都可能有相當多的客戶端JavaScript用於顯示「幫助」 - 顯示總計,針對其他輸入驗證等。格式化ASP.Net中的用戶輸入時間MVC

例如,一個用戶可能輸入「8:30」八小時三十分鐘,而另一個可能輸入「8.5」表示同樣的事情。我正在尋找能讓我將表單/驗證重複保持在最低水平的東西。

什麼是與模型和視圖有關的最好方法?

回答

2

允許這兩種格式的正則表達式不會那麼複雜。我會通過javascript執行這個簡單的驗證客戶端。除此之外,您可能需要爲此添加一些業務驗證(在業務對象級別)。

0

我用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分鐘。 這顯然是一個客戶端驗證。服務器端驗證當然也應該被執行。