Проверить частичное представление со сложной моделью? - PullRequest
0 голосов
/ 19 декабря 2010

У меня есть приложение расписания, где я загружаю PartialView с помощью jQuery. Все работает нормально, но я не знаю, как проверить ввод. Я пытался сделать это так же, как раньше, но это не работает:

    <% 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, он также содержит кнопку отправки, которая подчиняется методу действия.

Поскольку я использую Entity Framework, я прочитал, что мне нужно украсить модель 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, но я еще не дошел до этого, сначала нужно выполнить проверку)

Так что это не работает, что я делаю не так? Разве это невозможно сделать, потому что у меня есть сложная модель с циклом for в PartialView?

Я также думал о попытке найти какую-то строгую проверку jQuery (я видел плагины jQuery для этого), но я не могу понять, как использовать jQuery в PartialView. Потому что как я могу запустить jQuery, когда функция document.ready находится в основном (родительском) представлении? В любом случае мне это нужно, потому что позже я хочу иметь возможность делать что-то, если пользователь выбирает поле ввода ...

PS: Я все еще довольно новичок в jQuery и MVC, поэтому я очень ценю четкие указания относительно того, что я делаю неправильно ... Спасибо!

1 Ответ

0 голосов
/ 19 декабря 2010

Я бы начал с изменения типа на Int.Также вы можете использовать foreach вместо цикла For

foreach (Task task in task.TimeSegmentList)
...