Моя проблема очень похожа на мой предыдущий пост:
Как связать свойство с динамическим списком объектов
Однако я пытаюсь сделать то же самоеТо, что решило эту проблему в моем предыдущем посте с более сложным управлением, селектором входного файла.Из-за этого мой вопрос очень похож, но в этом случае я предполагаю, что исправление немного отличается, так как предыдущее решение не сработало.Как бы то ни было, здесь:
Я использую .net core 2.2 framework и не могу понять, как связать список IFormFile со страницей бритвы.На странице бритвы у меня есть кнопка, чтобы добавить новый файл ввода на экране.Эта кнопка выполняет событие jquery click, которое изменяет html, чтобы добавить новую кнопку ввода типа file без обновления страницы.Что я хочу сделать с этим, так это то, что когда я добавляю новую кнопку, она связывает выбранный файл с объектом List.Затем я могу обработать этот список элементов при публикации формы.
Моя страница Razor Page cs выглядит примерно так:
public class CreateModel : PageModel
{
#region Variables
private readonly MyContext _myContext;
#endregion
#region Properties
[BindProperty]
public List<IFormFile> Files { get; set; }
#endregion
public CreateModel(MyContext myContext)
{
_myContext = myContext;
}
public async Task<IActionResult> OnGetAsync()
{
#region Create instance of a FormFile for testing purposes
FormFile file;
using (var stream = System.IO.File.OpenRead("/test.txt"))
{
file = new FormFile(stream, 0, stream.Length, stream.Name, Path.GetFileName(stream.Name))
{
Headers = new HeaderDictionary(),
ContentType = "text/css",
};
}
Files.Add(file);
#endregion
return Page();
}
public async Task<IActionResult> OnPostAsync()
{
return Page();
}
}
Cshtml Razor Page выглядит примерно так:
...
<div id="file-container">
@for (var i = 0; i < Model.Files.Count(); i++)
{
<div class="myfile">
<label class="control-label">Upload file</label>
<input asp-for="Files[i]" type="file" />
</div>
}
</div>
<div class="item-add">
<a id="add-file" class="link-button"><img class="add-file" src="@Url.Content("~/images/ic_add.png")" />Add File</a>
</div>
и, наконец, вот мой код jquery:
$("#add-file").click(function () {
var nextId = $(".file").length;
var rowHtml = '<div class="file">' +
'<label class="control-label">Upload file</label>' +
'<input id="Files_' + nextId + '_" name="Files[' + nextId + ']" type="file" />' +
'</div>';
$("#file-container").append(rowHtml);
});
Наконец, когда я публикую форму, содержащую этот код, я хочу получить доступ к значениям, вводимым в динамически создаваемый HTMLиз моей привязанной собственности.
Если есть что-то, что не понято, пожалуйста, дайте мне знать, и я постараюсь уточнить.