首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在ASP.NET MVC 3中未设置复选框

在ASP.NET MVC 3中未设置复选框
EN

Stack Overflow用户
提问于 2012-05-22 02:38:31
回答 1查看 418关注 0票数 0

我试图在控制器中初始化我的复选框,就像下面的代码一样,但在视图中,无论它是真是假,它都没有被选中

控制器:

代码语言:javascript
运行
复制
 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;
        }
  }

查看:

代码语言:javascript
运行
复制
 @for (int i = 0; i < Model.Responsibles.Count; i++)
    {
         @Html.CheckBoxFor(u => u.Responsibles[i].IsChecked)            
    }

将模型从控制器发送到视图:

代码语言:javascript
运行
复制
 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);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-22 03:00:50

假设您的用户ViewModel如下所示

代码语言:javascript
运行
复制
public class UserViewModel 
{
  public string Name { set;get;}
  public int UserId { set;get;}
  public bool IsSelected { set;get;}
}

并且您的主视图模型包含此UserViewModel的集合

代码语言:javascript
运行
复制
public class EditProjectTaskModel 
{
  public List<UserViewModel > Responsibles { set; get; }

  public EditProjectTaskModel()
  {
    if(this.Responsibles ==null)
       this.Responsibles =new List<UserViewModel >();
  }
}

使用以下内容创建一个名为Responsibles.cshtml的编辑器模板

代码语言:javascript
运行
复制
@model YourNameSpace.UserViewModel 
@Html.CheckBoxFor(x => x.IsSelected)
@Html.LabelFor(x => x.IsSelected, Model.Name)
@Html.HiddenFor(x => x.UserId)

现在像这样将其包含在主视图中,而不是循环

代码语言:javascript
运行
复制
@model EditProjectTaskModel
@using (Html.BeginForm())
{
  //other elements
 @Html.EditorFor(m=>m.Responsibles)
 <input type="submit" value="Save" />
}

如果要在表单上获得选中的复选框,请提交。

代码语言:javascript
运行
复制
[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);    
     }
   } 
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10690723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档