.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" 添加文本输入,然后输入一些值并单击提交。然后你应该能够在控制器方法中接收到这个值。
我已经阅读了此处的其他帖子,试图解决我的问题,但没有成功。
我有一个基于简单模型的表格。
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" 添加文本输入,然后输入一些值并单击提交。然后你应该能够在控制器方法中接收到这个值。