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