我有一个类似的课程:
public class AddingNewRole
{
public List<LookUpRole> LookUpRoles { get; set; }
public List<AddNewRole> UserRoles { get; set; }
}
public class AddNewRole
{
public int RoleId { get; set; }
public string RoleName { get; set; }
}
public class LookUpRole{
public int LookUpRoleId { get; set; }
public string RoleName { get; set; }
public string RoleDescription { get; set; }
}
我在我的控制器中使用它将它传递给我的视图:
public ActionResult GetAccountRoles(int accountId)
{
var am = new AdministrationManager();
var result = am.GetAllRoles(accountId);
return PartialView(result);
}
我希望在我的视图中列出所有LookUpRoles(实际上有4个 - &#34;管理员,访客,成员和安全&#34;)以及{{1 }}在LookUpRoleId
中,意思是UserRole
,应该检查它,如果没有,则应该取消选中该复选框。使用下面的代码,我可以获得LookUpRoles的列表,但是当它应该只包含1时,它的每一行都有2个复选框。
以下是我的内容:
LookUpRoleId == RoleId
我在哪里得到错误的逻辑或实现?谢谢。
答案 0 :(得分:1)
以下应该做你想做的事:
@model IEnumerable<WebApplication3.Models.ViewModel.AddingNewRole>
<tbody>
@foreach (var item in Model)
{
foreach (var v in item.LookUpRoles)
{
<tr>
<td>
@Html.DisplayFor(modelItem => v.LookUpRoleId)
</td>
<td>
@Html.DisplayFor(modelItem => v.RoleName)
</td>
<td>
<input id=@v.LookUpRoleId
@(item.UserRoles.Any(r => r.RoleId == v.LookUpRoleId) ? "checked=\"checked\"" : String.Empty)
class="use-this switch-toggle switch-flat-mini switch-toggle-flat" type="checkbox">
<label for=@v.LookUpRoleId></label>
</td>
</tr>
}
}
</tbody>
如果用户的任何角色是当前查找角色,则只添加checked="checked"
。