gpt4 book ai didi

c# - 在 MVC 6 中,如何在 View 中编写复选框列表并将选中的值传递给 Controller ​​?

转载 作者:太空狗 更新时间:2023-10-29 17:49:11 25 4
gpt4 key购买 nike

抱歉,我的大部分搜索都将我带到旧的 MVC 代码。任何帮助将不胜感激。

在带有标签助手的 MVC 6 中,如何编写一组复选框:

  • 对标签使用标签助手,这样点击它就会切换选中的值
  • 将选中的值保存(绑定(bind)?)到 IsOptionSelected 属性
  • 点击提交后将这些选中的值传回Controller

?

我能够正确显示带有标签的复选框,但我不知道如何通过模型将选中的值传回 Controller 。现在,IsOptionSelected 值返回为 false。

我还能够使标签助手的 html 助手起作用,但标签助手不起作用。我也可能把这些都编码错了,所以任何提示都会有所帮助!

这是我目前所拥有的:

显示:

Phone Options Checkboxes

实体:

public class PhoneOption
{
public bool IsOptionSelected { get; set; } = false;
public int OptionId { get; set; }
public string OptionName { get; set; }
}

型号:

[Display(Name = "Phone Options")]
public IEnumerable<PhoneOption> PhoneOptions { get; set; }

. . . .
PhoneOptions = repository.GetPhoneOptions();

存储库:

public IEnumerable<PhoneOption> GetPhoneOptions()
{
IEnumerable<PhoneOption> options = new[]
{
new PhoneOption { OptionId = 1, OptionName = "Phone Case", IsOptionSelected = false },
new PhoneOption { OptionId = 2, OptionName = "Screen Protector", IsOptionSelected = false },
new PhoneOption { OptionId = 3, OptionName = "Car Charger", IsOptionSelected = false },
new PhoneOption { OptionId = 4, OptionName = "Extra Cable", IsOptionSelected = false }
};
return options;
}

查看:

<div class="form-group">
<label class="control-label">Phone Options</label>
<div>
@foreach (var option in Model.PhoneOptions)
{
<div>
@{ string cbId = "PhoneOption_" + @option.OptionId; }
<input asp-for=@option.IsOptionSelected type="checkbox" value=@option.IsOptionSelected id=@cbId name=@cbId />
@Html.Label(@cbId.ToString(), @option.OptionName)
@*This is causing invalid operation exception*@
@*<label asp-for=@cbId.ToString()>@option.OptionName</label>*@
<span asp-validation-for=@cbId class="text-danger" role="alert"></span>
</div>
}
</div>
</div>

提前致谢!

最佳答案

这就是我最终使它起作用的方法。我不确定这是否是最好的方法。我不得不仍然使用 html 助手,因为标签助手不起作用。

型号:

public List<PhoneOption> PhoneOptions { get; set; }
. . .
PhoneOptions = repository.GetPhoneOptions().ToList();

查看:

@if (@Model.PhoneOptions != null && @Model.PhoneOptions.Count() > 0)
{
for (int i = 0; i < @Model.PhoneOptions.Count(); i++)
{
<div>
<input asp-for="@Model.PhoneOptions[i].IsOptionSelected" type="checkbox" />
<label asp-for="@Model.PhoneOptions[i].IsOptionSelected">@Model.PhoneOptions[i].OptionName</label>

@*If these are not included, all OptionIds become 0 and all OptionName becomes null*@
@Html.HiddenFor(x => @Model.PhoneOptions[i].OptionId)
@Html.HiddenFor(y => @Model.PhoneOptions[i].OptionName)
</div>
}
}

我希望这对遇到相同复选框列表问题的其他人有所帮助。

更新:我已经更新了 html 助手以在上面标记助手。

关于c# - 在 MVC 6 中,如何在 View 中编写复选框列表并将选中的值传递给 Controller ​​?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36855481/

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