Mvc不验证输入类型文件

时间:2011-07-13 16:09:04

标签: asp.net-mvc asp.net-mvc-2 validation

我在视图中使用强类型视图模型,验证适用于所有文本字段,但它不适用于fileupload,下面是代码:

        <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 个答案:

答案 0 :(得分:4)

如果您使用不显眼的验证, HtmlHelpers 会插入一些 data-XXXX 属性以启用客户端 - 验证...因为MVC没有 INPUT [FILE] 的HtmlHelper,你必须 手动 插入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" />

希望它对你有所帮助。

答案 1 :(得分:2)

我认为验证消息正在寻找ImageLarge和ImageSmall进行验证。 如果更改name和id属性以匹配模型图像名称,它是否有效? e.g
    name =“ImageLarge”id =“ImageLarge”

答案 2 :(得分:0)

您无法在客户端验证<input type="file" />;必须将它发布到服务器并检查上传,只是没有解决方法。

答案 3 :(得分:0)

可能会AjaxSubmit帮助你。