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

ASP.NET Core 3.1 Razor视图单选按钮默认选中问题求助

解决ASP.NET Core Razor视图单选按钮默认选中问题

你遇到的核心问题是没有在生成单选按钮时,根据模型的Year属性动态设置选中状态。结合你的代码,我给你梳理几个关键修复步骤:

1. 修改Razor视图,添加默认选中判断

在foreach循环生成单选按钮时,通过判断当前循环年份是否匹配模型的Year值,动态添加checked属性:

@model CSD.ChartObjects 
<form method="post"> 
@foreach (var year in Model.Years) { 
    <input type="radio" asp-for="Year" value="@year" @(Model.Year == year ? "checked" : "") />@year<br /> 
} 
<input type="submit" asp-action="Index" /> 
</form>

这里的@(Model.Year == year ? "checked" : "")会在模型Year值与当前循环年份一致时,自动为单选按钮加上选中标记,这样页面加载时就会默认选中你在HttpGet方法中指定的"1399"。

2. 修正控制器的模型绑定(规范优化)

你当前HttpPost方法的参数是currentYear,但表单提交的字段名是Year(由asp-for="Year"生成),这可能导致模型绑定失效。建议两种优化方式:

方式一:接收完整模型

[HttpPost] 
public IActionResult Index([FromForm] ChartObjects model) { 
    return BuildIndexModel(model.Year); 
}

方式二:匹配表单字段名

[HttpPost] 
public IActionResult Index([FromForm] string Year) { 
    return BuildIndexModel(Year); 
}

3. 确保BuildIndexModel正确赋值Year属性

最后要确认BuildIndexModel方法中,已经把传入的年份值赋值给模型的Year属性,这样视图才能拿到正确的判断依据:

public IActionResult BuildIndexModel(string currentYear) { 
    var model = new ChartObjects();
    model.Year = currentYear; // 必须设置该属性,否则视图无法获取默认选中值
    // 其他初始化Percent、Time等集合的逻辑...
    return View(model); 
}

完成以上步骤后,你的单选按钮就能默认选中"1399",且提交时能正确将选中值传递给控制器展示对应数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 11:58:11