我在视图中使用强类型视图模型,验证适用于所有文本字段,但它不适用于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>
答案 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帮助你。