Mvc не проверяет тип входного файла - PullRequest
0 голосов
/ 13 июля 2011

Я использую модель представления со строгим типом для моего представления, проверка работает для всех текстовых полей, но не работает для загрузки файла, ниже приведен код:

        <div class="bg-content-inner">
            <% Html.EnableClientValidation(); %>
<% using (Html.BeginForm("Create", "Track", FormMethod.Post, new { enctype = "multipart/form-data" }))
                  { %>
    <%: Html.ValidationSummary("Please Correct the errors and try again")%>
    <table cellpadding="2" cellspacing="2" border="0">

                    <tr>
                        <td style="width:100px;">



        <div class="editor-label">
            <%: Html.LabelFor(model => model.Name) %>
        </div>
        </td>

                        <td colspan="2">
        <div class="editor-field">
            <%: Html.TextBoxFor(model => model.Name, new { style = "width:300px;" })%>
            <%: Html.ValidationMessageFor(model => model.Name,"Circuit Name Required") %>
        </div>

         </td>
                    </tr>

                      <tr>
                        <td>
                           Main Image
                        </td>
                        <td>
                        <div class="editor-field">
                            <input type="file" name="files" id="file1" style="color:White" />
                            <%:Html.ValidationMessageFor(model => model.ImageLarge,"Required") %>
                            </div>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            Detail Image
                        </td>
                        <td>
                        <div class="editor-field">
                            <input type="file" name="files" id="file2" style="color:White" />
                            <%:Html.ValidationMessageFor(model => model.ImageSmall,"Required") %>
                            </div>
                        </td>
                    </tr>

                    <tr></table>

Ответы [ 4 ]

4 голосов
/ 25 мая 2012

Если вы используете ненавязчивую проверку, HtmlHelpers вставит некоторые атрибуты data-XXXX , чтобы включить проверку на стороне клиента. .. поскольку MVC не имеет HtmlHelper для INPUT [FILE] , и вам необходимо вручную вставить элемент INPUT ... Вы также можете добавить атрибуты data-XXXX сами ... их и проверка на стороне клиента будет работать (ну ... по крайней мере в FF и Chrome ... У меня есть не проверял это в других) ... так ...

заменить:

<input type="file" name="files" id="file2" style="color:White" />

с:

<input type="file" name="files" id="file2" style="color:White" data-val="true" data-val-required="File is required" />

Надеюсь, это поможет вам.

2 голосов
/ 13 июля 2011

Я думаю, что сообщение проверки ищет ImageLarge и ImageSmall для проверки.Если вы измените атрибуты name и id в соответствии с именами изображений модели, это сработает?например,
name = "ImageLarge" id = "ImageLarge"

0 голосов
/ 14 июля 2011

Может быть AjaxSubmit помогает вам.

0 голосов
/ 13 июля 2011

Вы не можете проверить <input type="file" /> на стороне клиента; оно должно быть отправлено на сервер и проверено, загрузка просто не может обойтись.

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