【发布时间】:2015-01-24 23:53:52
【问题描述】:
我在一个视图中有以下表格:
@using (Html.BeginForm("Subscriptions", "Group", new { id = Model.Id, slug = Model.Slug, Groups = Model.Groups, Names = Model.SelectedNames, SelectedMemberEmail = Model.SelectedMember.EmailAddress, WhichView = "Subscriptions", }, FormMethod.Post))
{
<div id="communitygroupsedit" class="list-unstyled">
@for (var x = 0; x < Model.Groups.Count; x++)
{
if (Model.Groups[x].Name == "All members")
{
Model.Groups[x].AdminOnly = true;
}
string adminTest = (Model.Groups[x].AdminOnly && !Model.IsUserAdministrator) ? "disabled=\"disabled\"" : string.Empty;
string checktest = Model.Groups[x].IsMember ? "checked=\"checked\"" : string.Empty;
<p>
@Html.CheckBoxFor(m => m.Groups[x].IsMember, new { @adminTest @checktest})
@Html.Raw(Model.Groups[x].Name + " - " + Model.Groups[x].Description)
@if (adminTest == "disabled=\"disabled\"" && !Model.IsUserAdministrator && checktest == "checked=\"checked\"")
{
Model.SelectedNames.Add(Model.Groups[x].Name);
}
</p>
}
</div>
if (Model.Groups.Count > 0)
{
@Html.SubmitButton("Update groups", false, new { @class = "btn btn-primary" });
}
问题在于,在控制器中,“组”列表对象为空,而在视图中,满足条件时复选框不会被禁用。此外, selectednames 属性也没有根据我的需要填充“名称”列表。我在这个表单中做错了什么?
【问题讨论】:
-
恕我直言,您在视图中进行了如此多的处理,很难理解发生了什么。像 adminTest 和 checktest 这样的东西真的应该在控制器中。
标签: c# html asp.net-mvc forms checkbox