【问题标题】:AspNet Core - [Required] attribute not working on file inputAspNet Core - [必需] 属性不适用于文件输入
【发布时间】:2017-10-07 17:34:35
【问题描述】:

我有一个带有简单视图的 AspNet Core Web 应用程序,允许用户上传文件。 视图模型中的文件属性具有 [Required] 属性。但是,即使没有选择文件,单击提交按钮也会执行发布。

查看模型:

public class DocumentUploadViewModel
{
    [HiddenInput]
    public string Id { get; set; }

    [Required]
    [FileExtensions(Extensions = "pdf")]
    public IFormFile Document { get; set; }
}

查看:

@using App.Models.DocumentViewModels
@model DocumentUploadViewModel

@{
    ViewData["Title"] = "Upload Document";
}

<h2>Upload Document</h2>

<form method="post" enctype="multipart/form-data" asp-controller="Document" asp-action="Upload" >
    <div class="form-horizontal">
        <div class="form-group">
            <input asp-for="Id" />

            <label class="col-md-2 control-label">Document</label>
            <div class="col-md-10">
                <input class="form-control" type="file" asp-for="Document" />
                <span asp-validation-for="Document" class="text-danger"></span>
            </div>
        </div>
        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input id="save" name="save" type="submit" value="Upload" class="btn btn-default pull-right" />
            </div>
        </div>
    </div>
</form>

【问题讨论】:

    标签: asp.net-core


    【解决方案1】:

    根据Client side validation部分:

    您必须拥有一个包含正确 JavaScript 脚本引用的视图,这样客户端验证才能正常工作,如下所示:

    <script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.2.0.min.js"></script>
    
    <script src="https://ajax.aspnetcdn.com/ajax/jquery.validate/1.16.0/jquery.validate.min.js"></script>
    <script src="https://ajax.aspnetcdn.com/ajax/jquery.validation.unobtrusive/3.2.6/jquery.validate.unobtrusive.min.js"></script>
    

    【讨论】:

    • Arg!我不敢相信我错过了!你永远不会太老/经验丰富/等等而不是 RTFM。 :)
    猜你喜欢
    • 2013-04-18
    • 2014-05-12
    • 2013-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-18
    相关资源
    最近更新 更多