如何将单选按钮设置为默认选中



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

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

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

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

我认为这会起作用:

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

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

若要设置默认选中的单选按钮,您可以尝试以下代码片段。

<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 />

我不知道如何使用asp.net,但在JS中,我只需要访问HTMLInput标记的属性,这样你就可以分配属性"已检查";真实。

我想是这样的:

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

检查这两个链接:

  • 如何:为ASP中的控件设置HTML属性。NET网页
  • HtmlDocument。GetElementById(字符串(方法

最新更新