Ненавязчивая проверка клиента ASP.NET MVC с несколькими моделями - PullRequest
0 голосов
/ 01 августа 2011

ThingController создает модель, которая содержит (среди прочих свойств) коллекцию вещей.Их можно редактировать в виде следующим образом:

<form action="@Url.Action("Update", "Thing")" method="post">        
    <table>
        <tr>
            <th>Foo</th>
            <th>Bar</th>
        </tr>        
            @foreach (var thing in ViewData.Model.Things)
            {                
                <tr class="raw-data">
                    <td class="raw-data"><input name="things[@rowCount].Foo" class="raw-data" readonly="readonly" type="text" value="@thing.Foo" /></td>
                    <td class="raw-data"><input name="things[@rowCount].Bar" class="raw-data" type="text" value="@thing.Bar" /></td>
                </tr>                
                rowCount++;
            }
    </table>

    <br />
    <input type="submit" value="OK" />      
</form>

Контроллер содержит следующее действие, которое позволяет одновременно обновлять несколько вещей:

public ActionResult Update(ThingModel[] things)
{
  ...
}    

Я добавил некоторую проверкуатрибуты свойств класса Thing:

[Required]
[Range(0, 500000, ErrorMessage = "Foo must be within 0 and 500,000.")]
public double Foo{ get; set; }

[Required]
[Range(0, 500000, ErrorMessage = "Bar must be within 0 and 500,000.")]
public double Bar { get; set; }

Дело в том, что я не могу понять, как добавить ненавязчивую проверку с помощью помощников TextBoxFor и т. д.

На данный момент я думаю, чтоправильный подход заключается в том, чтобы вручную разметить поля ввода с помощью атрибутов проверки, но мне было интересно, кто-нибудь может указать мне какую-то документацию, учебное пособие и т. д., которые демонстрируют использование помощников, несколько моделей и ненавязчивая проверка

1 Ответ

2 голосов
/ 01 августа 2011

У меня была похожая проблема, когда пользователи могли динамически добавлять несколько писем в свою учетную запись. Я исправил это с помощью Jquery, добавив валидацию вручную. Вы должны дать вашей форме имя и добавить проверку для всех ваших товаров. Должно быть что-то вроде этого, я спрашиваю:

    $('#frmYourForm').validate();
    for (var i = 0; i < 'CountOfAllFields'; i++) {
        $('#Things_' + i + '__Foo').rules('add', { required: true, messages: { required: 'The Foo field is required'} });
        $('#Things_' + i + '__Bar').rules('add', { required: true, messages: { required: 'The Bar field is required'} });
    }

Набрано из моей памяти, поэтому не стреляйте в меня, если я допустил ошибку. Я не знаю точный синтаксис для Range, но вы должны просмотреть файл Jquery.validate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...