【问题标题】:How to set radio button to be checked by default如何设置默认选中的单选按钮
【发布时间】:2021-01-06 01:10:09
【问题描述】:

我正在实施 asp.net core 3.1。我的剃刀视图中有三个单选按钮,使用以下代码,我想将选定的单选按钮值发送到控制器中的索引操作,以显示其相关数据。我的问题是,我无法将其中一个单选按钮设置为默认选中。

@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; }


        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(string currentYear)
        {
...
}

【问题讨论】:

  • 感谢您的回复。我试过了。当我检查除默认单选按钮之外的任何其他单选按钮时,如果我使用此解决方案,则会再次错误地检查前一个默认单选按钮。
  • edit您的问题包含您在浏览器中看到的生成的HTML代码(检查浏览器的开发人员工具以查看HTML源代码)。

标签: asp.net-core-mvc


【解决方案1】:

我不知道如何使用 asp.net,但在 JS 中,我只需要访问 HTML Input 标签的属性,然后您就可以将属性“checked”分配给 true。

我猜是这样的:

HtmlElement Input1 = webBrowser1.Document.GetElementById("ID"); // consider adding an ID
Input1.Attributes.Add("checked", "true");

检查这两个链接:

【讨论】:

    【解决方案2】:

    我的问题是,我无法将其中一个单选按钮设置为默认选中。

    要设置默认选中的单选按钮,您可以尝试以下代码 sn-p。

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

    更新:

    我的数据默认是 1399

    您可以通过 ViewData 传递默认年份,如下所示。

    在控制器动作中

    ViewData["defaultyear"] = "1399";
    

    在查看页面中

    <input type="radio" asp-for="Year" value="@year" checked="@(year == ViewData["defaultyear"].ToString() ? "checked" : null)"/>@year<br />
    

    【讨论】:

    • 感谢您的回复。我的数据是 1398,然后是 1399,然后是 1400。默认情况下,运行项目后,主页视图会显示 1399 的数据。如果我使用您的建议,默认情况下单选按钮设置为 1398,而我的数据默认为 1399 . 1398 然后 1399 然后 1400 的顺序对我来说也很重要。那么我该如何解决呢?
    • 感谢您的回复。您提到的代码有一个错误:NullReferenceException: Object reference not set to an instance of an object。在“@year"
    • 您是否先在相应的控制器操作中为 ViewData["defaultyear"] 设置了值?
    【解决方案3】:

    我认为这会奏效:

    @foreach (var year in Model.Years)
    {
        var fi = (year == Model.Years[0]) ? true : false ;
        <input type="radio" asp-for="Year" value="@year" checked="@fi" />@year<br />
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-10
      • 1970-01-01
      • 2021-11-05
      • 2020-10-30
      • 2023-03-04
      • 2018-06-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多