ASP.NET Core 8 MVC(ASPNET Zero)下拉框回传值相关文档查询
ASP.NET Core 8 MVC(ASP.NET Zero)Select下拉框回传值绑定配置指南
核心绑定规则与name属性设置
模型绑定的核心逻辑是:表单字段的name属性值必须与控制器Action接收的参数对象的属性路径匹配(默认大小写不敏感)。
- 若Action参数是
CreateOrEditVisitorLogModalViewModel类型,name需设为VisitorLog.Visiting(对应ViewModel中嵌套的Dto属性路径),此时asp-for="@Model.VisitorLog.Visiting"会自动生成该name值,无需手动设置。 - 若Action参数是
CreateOrEditVisitorLogDto类型,name需设为Visiting(或小写visiting,模型绑定不区分大小写),这也是你手动设置name="visiting"能生效的原因。
注意:asp-for标签助手的核心作用是自动生成正确的name值、回显表单提交前的选中值,以及生成客户端验证属性。移除它不影响回传,是因为你手动设置了正确的name,但建议保留以获得完整的表单功能。
你的代码适配分析
你的下拉框配置已经是正确的:
asp-items通过SelectList绑定StaffMembers数据源,指定Id为选项值、Name为显示文本,符合ASP.NET Core MVC的下拉框数据源绑定规范。- 手动设置
name="visiting"匹配了Action接收的CreateOrEditVisitorLogDto参数的Visiting属性,因此能正确回传选中值。 - 保留的空选项
--- select one ---提供了默认未选择状态,符合表单交互逻辑。
ASP.NET Zero环境下的额外注意事项
ASP.NET Zero基于ASP.NET Core MVC,模型绑定规则与原生一致,但需关注:
- 项目生成的CRUD模板通常会直接用Dto作为Action参数(而非ViewModel),因此name属性需匹配Dto的属性名,而非ViewModel的嵌套路径。
- 若使用ABP框架的自动表单绑定功能,需确保name属性与Dto的属性名严格对应(大小写不敏感,但建议保持一致以避免潜在问题)。
内容的提问来源于stack exchange,提问作者OutstandingBill
相关产品推荐
相关产品推荐

