【发布时间】:2019-02-16 14:24:13
【问题描述】:
我的视图模型:
public class FileInfo
{
[Required]
[StringLength(50, ErrorMessage = "TitleErrorMessage", MinimumLength = 2)]
public string Title { get; set; }
[Required]
[StringLength(100, ErrorMessage = "DesErrorMessage", MinimumLength = 3)]
public string Description { get; set; }
[Required]
[DataType(DataType.Upload)]
public IFormFile File { get; set; }
}
以下是_UploadForm部分视图文件:
@model SessionStateTest.Models.FileInfo
<div class="form-group">
<label>Title</label>
<input class="form-control" asp-for="Title" />
</div>
<div class="form-group">
<label>Description</label>
<input class="form-control" asp-for="Description" />
</div>
<div class="form-group">
<label></label>
<input type="file" asp-for="File" />
</div>
在另一个视图中使用此代码:
<form asp-action="AddUploadForm" asp-controller="Home" method="Post">
<input type="submit" value="Add another file" class="btn btn-sm btn-primary" />
</form>
<form asp-action="Upload" asp-controller="Home" method="Post" enctype="multipart/form-data">
@foreach (var item in Model.Upload)
{
@(await Html.PartialAsync("_UploadForm", item))
}
<div class="col-xs-12">
<input type="submit" value="Upload" class="btn btn-sm btn-info" />
</div>
</form>
基本上AddUploadForm 操作将FileInfo 类型的新视图模型添加到Model.Upload,这是我的主视图模型。
问题是下面Upload 操作中的List<FileInfo> vm 列表完全为空:
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Upload(List<FileInfo> vm)
{
.... some other logic
return View();
}
我不想使用multiple 属性,因为我想强制用户为每个文件提供标题和描述。
感谢任何帮助!
【问题讨论】:
标签: c# asp.net razor asp.net-core tag-helpers