微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

.Net Core MVC Web应用程序无法将值从View传递到Controller

如何解决.Net Core MVC Web应用程序无法将值从View传递到Controller

我已在此处阅读其他文章,以尝试解决我的问题,但没有运气。

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

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始终为null,即使在View本身上,我也可以看到model.FileName确实包含一个值。

有人可以解释我在做什么错吗?

非常感谢

解决方法

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

尝试添加名称为“ FileName”的文本输入,然后输入一些值,然后单击“提交”。然后,您应该可以在控制器方法中接收该值。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。