【问题标题】:How to send selected radiobutton value from view to controller in asp.net core如何将选定的单选按钮值从视图发送到asp.net核心中的控制器
【发布时间】:2020-09-16 16:15:42
【问题描述】:

我正在实施 asp.net core 3.1。我的剃刀视图中有三个单选按钮,使用以下代码,我想将选定的单选按钮值发送到控制器中的索引操作,以显示其相关数据。我的问题是在选择一个单选按钮之后,然后选择该按钮。它将空值发送到 Index 方法。

这是我在 razor 中的单选按钮代码

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

这是我在 razor 中读取的模型对象

    public class ChartObjects
    {
        public List<ChartModel> Percent { get; set; }
        public List<ChartModel> Time { get; set; }
        public List<ChartModel> Avg { get; set; }
        public List<ChartModel> Total { get; set; }

        [BindProperty]
        public string Year { get; set; }
        public string[] Years = new[] { "1398", "1399", "1400" };
    
}

这是我的 HomeController 的主体:

[HttpGet]
        public IActionResult Index()
        {
            return (BuildIndexModel("1399"));
        }

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



        public IActionResult BuildIndexModel([FromForm] string currentYear)
        {
...
}

【问题讨论】:

    标签: asp.net-core-mvc


    【解决方案1】:

    你遇到的问题是因为这个:

    [HttpPost]
    public IActionResult Index([FromForm] string currentYear)
    

    在您的表单上,您要绑定的值称为Year,但在您的POST 操作中,您指定了一个名为currentYear 的参数。 MVC 不知道您要将Year 的值绑定到currentYear。模型绑定完全基于模型上的属性名称约定,与从表单发送的数据相同。

    所以您需要做的就是将您的 POST 方法更改为:

    [HttpPost]
    public IActionResult Index(string year)
    

    请注意,我还删除了[FromForm] 属性。您无需在此处指定以使其正确绑定。我猜你在试图弄清楚它为什么不起作用时添加了它。出于同样的原因,您也不需要视图模型上的 [BindProperty] 属性 - 重要的是属性的名称。

    【讨论】:

    • 感谢您的回复。现在我有一个问题要让其中一个单选按钮默认被选中。如果我使用属性 check=checked,当我选择默认单选按钮以外的任何其他单选按钮时,默认单选按钮会再次被选中。如果有人建议我解决方案,我将不胜感激。
    • @MinaMRM 您应该将其作为一个单独的问题发布,因为它是一个单独的问题,但请先阅读this answer,看看它是否有帮助。
    猜你喜欢
    • 1970-01-01
    • 2020-08-26
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    • 1970-01-01
    • 2018-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多