使用复杂模型验证局部视图?

时间:2010-12-19 11:36:47

标签: jquery asp.net asp.net-mvc-2 entity-framework-4 asp.net-mvc-partialview

我有一个时间表应用程序,我用jQuery加载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>
    <% } %>

虽然使用jQuery加载了这个PartialView,但它还包含一个提交按钮,该按钮提交给一个动作方法。

因为我正在使用实体框架,所以我已经读过我需要用这样的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; }
    }
}

所以我想确保这是一个0到24之间的数字,在这里输入数小时。 (我还想确保它是一个int,但我还没有完成,需要首先进行验证工作)

所以这不起作用,我做错了什么?是不是可以这样做,因为我在PartialView中有for循环的复杂模型?

我还在考虑尝试找到某种严格的jQuery验证(我已经看到了jQuery插件),但我无法弄清楚如何在PartialView中使用jQuery。因为当document.ready函数在主(父)视图中时,如何才能运行jQuery?无论如何我会需要这个,因为如果用户选择输入字段,我希望能够做某事......

PS:我还是jQuery和MVC的新手,所以我真的很感激我明白我做错了什么......谢谢!

1 个答案:

答案 0 :(得分:0)

我首先将类型更改为Int。此外,您可以使用foreach而不是For循环

foreach (Task task in task.TimeSegmentList)