我正在实现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(字符串(方法