我试图在控制器中初始化我的复选框,就像下面的代码一样,但在视图中,无论它是真是假,它都没有被选中
控制器:
foreach (var item in AssignedUsers)
{
if (dc.App_UserTasks.Any(u => u.UserId == item.UserId && u.TaskId == ProjectTask.Id))
{
Users.Single(u => u.Id == item.Id).IsChecked = true;
}
else
{
Users.Single(u => u.Id == item.Id).IsChecked = false;
}
}查看:
@for (int i = 0; i < Model.Responsibles.Count; i++)
{
@Html.CheckBoxFor(u => u.Responsibles[i].IsChecked)
}将模型从控制器发送到视图:
var EPT = new EditProjectTaskModel
{
ProjectId = ProjectTask.ProjectId,
Title = ProjectTask.Title,
ProjectName = ProjectTask.App_Project.ProjectName,
Id = ProjectTask.Id,
Description = ProjectTask.Description,
EstimatedTime = ProjectTask.EstimatedTime,
Status = ProjectTask.Status,
Responsibles = Users.ToList()
};
return PartialView("_EditProjectTask", EPT);发布于 2012-05-22 03:00:50
假设您的用户ViewModel如下所示
public class UserViewModel
{
public string Name { set;get;}
public int UserId { set;get;}
public bool IsSelected { set;get;}
}并且您的主视图模型包含此UserViewModel的集合
public class EditProjectTaskModel
{
public List<UserViewModel > Responsibles { set; get; }
public EditProjectTaskModel()
{
if(this.Responsibles ==null)
this.Responsibles =new List<UserViewModel >();
}
}使用以下内容创建一个名为Responsibles.cshtml的编辑器模板
@model YourNameSpace.UserViewModel
@Html.CheckBoxFor(x => x.IsSelected)
@Html.LabelFor(x => x.IsSelected, Model.Name)
@Html.HiddenFor(x => x.UserId)现在像这样将其包含在主视图中,而不是循环
@model EditProjectTaskModel
@using (Html.BeginForm())
{
//other elements
@Html.EditorFor(m=>m.Responsibles)
<input type="submit" value="Save" />
}如果要在表单上获得选中的复选框,请提交。
[HttpPost]
public ActionResult Save(EditProjectTaskModel model)
{
List<int> userIDs=new List<int>();
foreach (UserViewModel user in model.Responsibles)
{
if (user.IsSelected)
{
//you can get the selected user id's here
userIDs.Add(user.UserId);
}
}
}https://stackoverflow.com/questions/10690723
复制相似问题