0

我有一个时间表应用程序,我在其中使用 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>
    <% } %>

虽然这个 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; }
    }
}

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

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

我也在考虑尝试找到某种严格的 jQuery 验证(我已经看到为此存在 jQuery 插件),但我不知道如何在 PartialView 中使用 jQuery。因为当 document.ready 函数位于主(父)视图中时,如何让 jQuery 运行?无论如何我都需要这个,因为以后如果用户选择输入字段,我希望能够做一些事情......

PS:我对 jQuery 和 MVC 还是很陌生,所以我真的很感激我做错了什么的明确指示......谢谢!

4

1 回答 1

0

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

foreach (Task task in task.TimeSegmentList)
于 2010-12-19T12:13:12.593 回答