.Net Core MVC Web App - 将值从 View 传递到 Form 中的 Controller 不起作用

.Net Core MVC Web App - passing value from View to Controller in a Form not working

我已经阅读了此处的其他帖子,试图解决我的问题,但没有成功。

我有一个基于简单模型的表格。

public class Image
{       
    public string FileName { get; set; }
    public string ImagePath { get; set; }

}

在我看来,我有一个显示图像的表单:

@model Uploader.Models.Image

<h1>View Image</h1>



<form asp-controller="Images" asp-action="Download" method="post" enctype="multipart/form-data">

    <img src="~/Images/@Model.FileName" />


    <input type="submit" value="Download Image" class="btn btncolour btn-primary" />

    @Model.FileName

</form>

最后一个 Model.Filename,我只是在测试该值是否存在(确实如此)。据我所知,这里的一切都很好,当我提交此表单时,我模型中的值(特别是 Image.FileName)应该回发到服务器。

我的控制器方法:

    [HttpPost]
    public async Task<IActionResult> Download(Image image)
    {
        if (image.FileName == null)
            return Content("filename not present");

        var path = Path.Combine(
                       Directory.GetCurrentDirectory(),
                       "wwwroot", image.FileName);

        var memory = new MemoryStream();
        using (var stream = new FileStream(path, FileMode.Open))
        {
            await stream.CopyToAsync(memory);
        }
        memory.Position = 0;
        return File(memory, GetContentType(path), Path.GetFileName(path));
    }

我的代码在回发时调用了这个方法,但是 image.FileName 始终为空,即使在视图本身上,我可以看到 model.FileName 确实包含一个值。

谁能解释一下我做错了什么?

非常感谢

FileName 用于图像的 src 但不作为输入。单击提交时,仅在请求中发送输入字段值。

尝试使用 name="FileName" 添加文本输入,然后输入一些值并单击提交。然后你应该能够在控制器方法中接收到这个值。