0

我有一個時間表應用程序,我用jQuery加載PartialView。一切工作正常,但我不知道如何驗證輸入。我試圖做同樣它我怎麼做之前,但它不工作:使用複雜模型驗證partialview?

<% for (int i = 0; i < Model.Tasks.Count; i++) 
     { 
      var task = Model.Tasks[i]; 
    %> 
    <tr class="taskrow"> 
     <td class="customer"> 
      <%: task.Customer.CustomerName %> 
     </td> 
     <td class="task"> 
      <%: task.TaskName %> 
     </td> 
     <% for (int j = 0; j < task.TimeSegmentList.Count; j++) 
      { %> 
     <td> 
      <%: Html.TextBoxFor(model => model.Tasks[i].TimeSegmentList[j].Hours, new { @class = "hourInput" })%> 
      <%: Html.ValidationMessageFor(model => model.Tasks[i].TimeSegmentList[j].Hours)%> 
     </td> 
     <% } %> 
    </tr> 
    <% } %> 

雖然這是PartialView使用jQuery加載,它也包含一個提交按鈕,提交到的操作方法。

因爲我使用實體框架我已閱讀,我需要這樣的DataAnnotations裝點型號:

[MetadataType(typeof(TimeSegmentMetaData))] 
public partial class TimeSegment 
{ 

    public class TimeSegmentMetaData 
    { 
     [Range(0,24,ErrorMessage = "Must be between 0 and 24 hours")] 
     public object Hours { get; set; } 
    } 
} 

所以我想,以確保它是一個號碼在此輸入24之間0和小時。 (我也想確保它是一個整數,但我還沒有得到這一點,首先需要驗證工作)

所以這不起作用,我做錯了什麼?這是不可能的,因爲我在PartialView中有for循環的複雜模型?

我也想試圖找到一些嚴格的jQuery驗證(我已經看到jQuery插件存在這個),但我無法弄清楚如何在PartialView中使用jQuery。因爲如何在document.ready函數在主(父)視圖內運行時運行jQuery?我會需要這個,因爲後來我想能夠做的事情,如果用戶選擇一個輸入字段...

PS:我還是比較新的jQuery和MVC,所以我會很感激明確指出我在做什麼錯...謝謝!

回答

0

我會開始將類型更改爲一個Int。此外,您還可以使用的foreach代替For循環

foreach (Task task in task.TimeSegmentList) 
+0

好吧,類型就是反對,因爲這是在實體框架中的元數據,在實際的模型,它是一個int。而且我不能使用foreach,因爲視圖中帶有textboxfor的綁定需要for循環。 – Anders 2010-12-20 09:22:10