我正在实现asp.net core 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)
{
...
}
答案 0 :(得分:0)
我不知道如何使用asp.net,但是在JS中,我只需要访问HTML Input标签的属性,然后就可以将属性“ checked”分配为true。
我猜是这样的:
HtmlElement Input1 = webBrowser1.Document.GetElementById("ID"); // consider adding an ID
Input1.Attributes.Add("checked", "true");
检查这两个链接:
答案 1 :(得分:0)
我的问题是,我无法将这些单选按钮之一设置为默认选中状态。
要设置默认的选中单选按钮,您可以尝试使用以下代码段。
<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 />
答案 2 :(得分:0)
我认为这会起作用:
@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 />
}