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

ASP.NET MVC表单提交后Options子类未正确返回至控制器问题

问题根源

ASP.NET MVC 模型绑定器会根据提交的表单字段名和参数的属性名做匹配,你视图生成的输入框name属性为options.date,但你POST方法直接接收Options类型参数时,默认只会匹配字段名是date的提交内容,前缀不匹配导致绑定失败,最终options参数为null。

解决方案

方案1(最推荐):POST接口直接接收完整ViewModel

直接用和GET方法一致的视图模型作为接收参数,绑定器会自动匹配层级字段,无需额外配置前缀:

[HttpPost]
public ActionResult Index(SchoolsInformationFooViewModel model) 
{
    // 直接通过model.options.date获取提交的日期值
}

方案2:为Options参数添加正确的Bind前缀

如果确实需要单独接收Options类型参数,需要给Bind特性显式指定前缀为options,告知绑定器匹配带options.前缀的字段:

[HttpPost]
public ActionResult Index([Bind(Prefix = "options", Include = "date")] Options options) 
{
    // 此时options.date可正常获取值
}

异常排查(若加前缀后仍为null)

  1. 打开浏览器F12网络面板,检查表单提交的字段中是否存在options.date,确认值格式正常
  2. 检查服务端区域文化配置是否支持俄式日期格式dd.MM.yyyy,若不匹配会导致日期解析失败,最终触发绑定失败返回null。可在web.config中配置对应文化:
<system.web>
  <globalization culture="ru-RU" uiCulture="ru-RU" />
</system.web>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:09:05