在MVC 6中,如何在视图中编码复选框列表并将选中的值传递给控制器?
抱歉,我的大多数搜索都会将我带到旧的MVC代码。 任何帮助将不胜感激。
在带有标记帮助器的MVC 6中,如何编写一组复选框:
- 使用标签帮助器作为标签,因此单击它将切换选中的值
- 将选中的值保存(绑定?)到IsOptionSelected属性
- 单击“提交”后,将这些选中的值传递回Controller
?
我能够正确显示带有标签的复选框,但我不知道如何通过模型将检查的值传递回控制器。 现在,IsOptionSelected值返回false。
我还能够为标签工作制作html帮助器,但不能为标签帮助器制作。 我可能也编码这些都错了所以任何提示都会有所帮助!
这是我到目前为止所拥有的:
显示:
实体:
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 PhoneOptions { get; set; } . . . . PhoneOptions = repository.GetPhoneOptions();
库:
public IEnumerable GetPhoneOptions() { IEnumerable 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; }
视图:
@foreach (var option in Model.PhoneOptions) { @{ string cbId = "PhoneOption_" + @option.OptionId; } @Html.Label(@cbId.ToString(), @option.OptionName) @*This is causing invalid operation exception*@ @**@ }
提前致谢!
这最终是我做的工作。 我不确定这是否是最好的方法。 我不得不仍然使用html助手,因为标签助手不起作用。
模型:
public List PhoneOptions { get; set; } . . . PhoneOptions = repository.GetPhoneOptions().ToList();
查看 :
@if (@Model.PhoneOptions != null && @Model.PhoneOptions.Count() > 0) { for (int i = 0; i < @Model.PhoneOptions.Count(); i++) { @*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) } }
我希望这有助于其他拥有相同复选框列表问题的人。
更新:我已经更新了html帮助器以标记上面的助手。
这就是你的每个asp-for语法应该如何包装在带引号的字符串中
@foreach (var option in Model.PhoneOptions) { @{ string cbId = "PhoneOption_" + @option.OptionId; } @Html.Label(@cbId.ToString(), @option.OptionName) @*This is causing invalid operation exception*@ @**@ }
- 修改CookieAuthenticationOptions LoginPath OnRedirectToReturnUrl事件
- 使用特定的HttpMessageHandler注入单实例HttpClient
- asp.net mvc核心如何返回Json查询
- 将复杂对象存储在TempData中
- 在MVC 6中读取文件
- HttpRuntime.Cache等效于asp.net 5,MVC 6
- ASP.NET Core Identity在应用程序启动时添加自定义用户角色
- Cookie身份validation在ASP.NET Core中过早到期
- 如何在ASP.NET Core 1.0的DI中的Startup类中添加IHttpContextAccessor?