You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core MVC表单View向Controller传值失败求助

问题分析与解决方案

你遇到的核心问题是表单提交时没有把FileName的值传递到服务器——虽然你在视图里显示了@Model.FileName的内容,但这只是页面上的纯文本,并没有被包含在表单的提交数据中。ASP.NET Core的模型绑定只能识别表单控件(比如input、select这类元素)提交的参数,没法直接读取页面上的文本内容,所以控制器里的image.FileName始终为null。

解决方法

在表单中添加一个隐藏输入框,把FileName的值绑定到这个控件上,这样表单提交时就能将该值发送到服务器了:

修改后的视图代码:

@model Uploader.Models.Image 
<h1>View Image</h1> 
<form asp-controller="Images" asp-action="Download" method="post"> 
    <img src="~/Images/@Model.FileName" /> 
    <!-- 添加隐藏字段传递FileName值 -->
    <input type="hidden" asp-for="FileName" />
    <input type="submit" value="Download Image" class="btn btncolour btn-primary" /> 
    @Model.FileName 
</form>

补充说明

  • asp-for="FileName"标签助手会自动生成name="FileName"的属性,和你的Image模型的FileName属性对应,模型绑定器就能正确把提交的值映射到image.FileName上。
  • 隐藏输入框不会在页面上显示,但会随表单一起提交它的值,完美满足了传递数据又不影响页面展示的需求。
  • 另外你的表单设置了enctype="multipart/form-data",但这里并没有上传文件的控件,这个属性可以去掉(保留也不会报错,只是没必要)。

内容的提问来源于stack exchange,提问作者DotNetCoreMVCNewbie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 09:27:45