gpt4 book ai didi

html - 如何覆盖 RadioButtonFor 的名称属性?

转载 作者:可可西里 更新时间:2023-11-01 12:51:57 25 4
gpt4 key购买 nike

我正在尝试将使用 for 循环和 Razor 语法创建的单选按钮组合在一起。这是代码:

       @for (var i = 0; i < Model.Sessions.Count(); i++)
{
@Html.HiddenFor(it => it.Sessions[i].Id)
@Html.RadioButtonFor(it => it.Sessions[i].Checkbox, "0", new {@class = "Sessions", @id = id, @name="Sessions"})
@Html.LabelFor(it => it.Sessions[i].Name, Model.Sessions[i].Name)
<span class="time-span"><em>@Model.Sessions[i].StartTime</em><em>@Model.Sessions[i].EndTime</em></span>
<br />
}

for 循环中的第三行是问题所在。基本上名称不会改变,它始终是“Sessions[x].Checkbox”。复选框是自定义类的属性 (bool)。我似乎无法掌握调试 Razor 东西的诀窍,所以任何帮助将不胜感激,我猜这对这里的人来说是非常明显的。

编辑Dimitrov 的帖子帮了大忙。下面是我使用的最终代码。我使用 @class 和 @id 属性能够使用 Javascript 来选择最初选择的 session (因为这是一个编辑,而不是创建表单)。

    @for (var i = 0; i < Model.Sessions.Count(); i++)
{
@Html.HiddenFor(it => it.Sessions[i].Id)
var SId = @Model.Sessions[i].Id;
@Html.RadioButtonFor(it => it.selectedSession, Model.Sessions[i].Id, new { id = SId, @class = "Sessions" })
@Html.LabelFor(it => it.Sessions[i].Name, Model.Sessions[i].Name)
<span class="time-span"><em>@Model.Sessions[i].StartTime</em><em>@Model.Sessions[i].EndTime</em></span>
<br />
}

最佳答案

如果你只想选择一个单选按钮,你需要在 View 模型上有一个属性来保存所选的 session ID,如下所示:

public class SessionViewModel
{
public int SelectedSessionId { get; set; }
public IList<Session> Sessions { get; set; }
}

public class Session
{
public int Id { get; set; }
public string Name { get; set; }
}

然后有一个 Controller :

public class HomeController : Controller
{
public ActionResult Index()
{
var model = new SessionViewModel
{
SelectedSessionId = 2,
Sessions = Enumerable.Range(1, 5).Select(x => new Session
{
Id = x,
Name = "session" + x,
}).ToList()
};
return View(model);
}

[HttpPost]
public ActionResult Index(SessionViewModel model)
{
return Content("Thank you for selecting session id: " + model.SelectedSessionId);
}
}

最后是一个 View :

@model SessionViewModel

@using (Html.BeginForm())
{
for (var i = 0; i < Model.Sessions.Count(); i++)
{
@Html.HiddenFor(x => x.Sessions[i].Id)
@Html.RadioButtonFor(x => x.SelectedSessionId, Model.Sessions[i].Id, new { id = "session_" + i })
@Html.Label("session_" + i, Model.Sessions[i].Name)
<br/>
}
<button type="submit">OK</button>
}

关于html - 如何覆盖 RadioButtonFor 的名称属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11038492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com