ASP.NET MVC5-将项目添加到模型虚拟列表

卡萨尔·奥唐奈

我有一个名为Club的模型,每个俱乐部都有该俱乐部成员的虚拟列表属性。我不知道如何将更多成员添加到该列表,然后将其保存到我的数据库中。

public class Club
    {
        [Key]
        public int ClubID { get; set; }

        public string ClubName { get; set; }

        public string ClubDescription { get; set; }


        //List of Members that are members of this Club
        public virtual List<ClubMember> ClubMembers { get; set; }

    }//end Club

这是ClubMember模型:

public class ClubMember
{
    [Key]
    public int MemberId { get; set; }

    //First Name
    [Display(Name = "First Name")]
    public string MemberFName { get; set; }

    //Last Name
    [Required(ErrorMessage = "You must enter a Last Name")]
    [Display(Name = "Last Name")]
    public string MemberLName { get; set; }

    [Display(Name = "Member Name")]
    public string MemberName { get; set; }

    public string MemberEmail { get; set; }

    //Foreign Key for Club
    public int ClubID { get; set; }

    [ForeignKey("ClubID")]
    public virtual Club Club { get; set; }
}

我正在使用包装器模型来获取用户希望添加的成员的选定ID的列表,但是我不确定是否需要这样做:

public class NewMemberList //Class used when adding new members to the members list of a club
    {
        public List<ClubMember> NewMembers { get; set; }
        public List<int> SelectedIDs { get; set; }
    }

这是我目前在添加成员时看到的内容,它只显示一个下拉列表,其中包含成员列表和一个提交按钮

@model ultimateorganiser.Models.NewMemberList

@{
    ViewBag.Title = "Add Members";
}

@using (Html.BeginForm(@Model.SelectedIDs))
{
    @Html.AntiForgeryToken()
    @Html.ListBoxFor(m => m.SelectedIDs, new MultiSelectList(Model.NewMembers, "UserId", "UserFName", Model.SelectedIDs))

    <input type="submit" value="save" />   
}

这是我的控制器方法。由于我不知道如何处理帖子部分,因此尚未完成,因此它无法获取选定ID的列表,并将该成员的所有数据添加到俱乐部的成员列表中:

 [HttpGet]
        public ActionResult AddMembers(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }

            Club club = db.Clubs.Find(id);

            if (club == null)
            {
                return HttpNotFound();
            }

            List<ClubMember> CurrentMembers = club.ClubMembers;

            List<ClubMember> MembersList = new List<ClubMember>();
            MembersList = db.ClubMembers.ToList();

            ViewBag.CurrentMembersList = CurrentMembers;
            return View(new NewMemberList() { NewMembers = MembersList });
        }

        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult AddMembers([Bind(Include = "SelectedIDs")] Club club)
        {
            if (ModelState.IsValid)
            {
                //Get selected members and add them to Members list for the club
                return RedirectToAction("Index");
            }
            return View(club);      

     }

如果您有疑问或想查看我的更多代码,请询问。

y州

您的视图模型也应该存储ClubId,因为您要将新成员添加到特定的Club。

public class AddMembersToClub
{
  public string Name { set;get;}
  public int ClubId { set;get;}
  public List<SelectListItem> Members { set;get;}
  public int[] SelectedMembers { set;get;}
}

然后在您的GET操作中

public ActionResult AddMembers(int id)
{
    var club = db.Clubs.Find(id);
    if (club == null)
    {
       return HttpNotFound();
    }
  var vm = new AddMembersToClub { ClubId=id , Name = club.ClubName };
  //Here I am getting all the members, If you want a subset, update the LINQ query
  vm.Members = db.ClubMembers
              .Select(x=> new SelectListItem { Value = x.MemberId.ToString(),
                                               Text=x.MemberFName }).ToList();
  return View(vm);
}

在您看来,这是我们的AddMembersToClub视图模型的强类型您需要将其保留ClubId在隐藏的表单字段中,就像我们在HttpPost操作中需要的那样。

@model AddMembersToClub
@using(Html.BeginForm())
{
   <p>Adding members to @Model.Name</p>

   @Html.HiddenFor(s=>s.ClubId)
   @Html.ListBoxFor(s => s.SelectedMembers, Model.Members)

   <input type="submit" />
}

然后在HttpPost操作中,读取SelectedMembers属性,该属性是一个存储选定成员的ID并使用该ID的int数组,获取Member实体并udpate该ClubId属性。

[HttpPost]
public ActionResult AddMembers(AddMembersToClub model)
{
   foreach(var item in model.SelectedMembers)
   {
     var member = db.ClubMembers.FirstOrDefault(s=>s.MemberId==item);
     if(member!=null)
     {
        member.ClubId = model.ClubId;
     }
     db.SaveChanges();
   }
   return ReidrectToAction("Index");
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将项目添加到虚拟集合ASP.NET MVC

来自分类Dev

将客户端Blazor添加到现有的ASP.NET MVC5应用程序

来自分类Dev

将List <T>映射到ASP.NET MVC5中的模型

来自分类Dev

使用Twitter Bootstrap将响应图像插入ASP.NET MVC5项目

来自分类Dev

如何将ASP.NET MVC5身份验证添加到现有数据库

来自分类Dev

从ASP.Net MVC5中的两个EF模型创建ViewModel

来自分类Dev

当前上下文ASP.NET MVC5中不存在名称“模型”

来自分类Dev

从ASP.Net MVC5中的两个EF模型创建ViewModel

来自分类Dev

当前上下文ASP.NET MVC5中不存在名称“模型”

来自分类Dev

1个控制器处理2个模型,ASP.NET,MVC5

来自分类Dev

带有ViewModel的ASP.NET MVC5控制器CRUD(2个模型)

来自分类Dev

如何从ASP.NET MVC5中的JSON绑定模型中的属性

来自分类Dev

项目外部的ASP.NET MVC5访问文件夹

来自分类Dev

根据asp.net mvc5中数据库的值设置下拉列表的值

来自分类Dev

ASP.NET MVC5 触发 onchange 事件时从数据库填充下拉列表

来自分类Dev

如何将asp.net mvc5缓存到硬盘驱动器?

来自分类Dev

c#asp.net mvc5,将js嵌入到c#dll中

来自分类Dev

如何将DateTime参数从View传递到ASP.net MVC5中的Controller?

来自分类Dev

如何将asp.net mvc5缓存到硬盘驱动器?

来自分类Dev

ASP MVC5 UserManager添加方法

来自分类Dev

MVC5将项目添加到列表

来自分类Dev

MVC5将项目添加到列表

来自分类Dev

动态地将链接字段添加到ASP.NET MVC EF模型

来自分类Dev

将Funscript添加到现有的ASP.NET MVC项目

来自分类Dev

将类添加到ASP.NET MVC4项目

来自分类Dev

无法将文件上传功能添加到项目-ASP.Net MVC Core 3.0

来自分类Dev

如何将CSS添加到我的项目asp.net mvc中?

来自分类Dev

ASP.NET/MVC 我想要从 jqgrid pager mvc5 单独的添加/更新/删除按钮

来自分类Dev

将ASP.NET MVC区域添加到ASP.NET Web窗体现有项目

Related 相关文章

  1. 1

    将项目添加到虚拟集合ASP.NET MVC

  2. 2

    将客户端Blazor添加到现有的ASP.NET MVC5应用程序

  3. 3

    将List <T>映射到ASP.NET MVC5中的模型

  4. 4

    使用Twitter Bootstrap将响应图像插入ASP.NET MVC5项目

  5. 5

    如何将ASP.NET MVC5身份验证添加到现有数据库

  6. 6

    从ASP.Net MVC5中的两个EF模型创建ViewModel

  7. 7

    当前上下文ASP.NET MVC5中不存在名称“模型”

  8. 8

    从ASP.Net MVC5中的两个EF模型创建ViewModel

  9. 9

    当前上下文ASP.NET MVC5中不存在名称“模型”

  10. 10

    1个控制器处理2个模型,ASP.NET,MVC5

  11. 11

    带有ViewModel的ASP.NET MVC5控制器CRUD(2个模型)

  12. 12

    如何从ASP.NET MVC5中的JSON绑定模型中的属性

  13. 13

    项目外部的ASP.NET MVC5访问文件夹

  14. 14

    根据asp.net mvc5中数据库的值设置下拉列表的值

  15. 15

    ASP.NET MVC5 触发 onchange 事件时从数据库填充下拉列表

  16. 16

    如何将asp.net mvc5缓存到硬盘驱动器?

  17. 17

    c#asp.net mvc5,将js嵌入到c#dll中

  18. 18

    如何将DateTime参数从View传递到ASP.net MVC5中的Controller?

  19. 19

    如何将asp.net mvc5缓存到硬盘驱动器?

  20. 20

    ASP MVC5 UserManager添加方法

  21. 21

    MVC5将项目添加到列表

  22. 22

    MVC5将项目添加到列表

  23. 23

    动态地将链接字段添加到ASP.NET MVC EF模型

  24. 24

    将Funscript添加到现有的ASP.NET MVC项目

  25. 25

    将类添加到ASP.NET MVC4项目

  26. 26

    无法将文件上传功能添加到项目-ASP.Net MVC Core 3.0

  27. 27

    如何将CSS添加到我的项目asp.net mvc中?

  28. 28

    ASP.NET/MVC 我想要从 jqgrid pager mvc5 单独的添加/更新/删除按钮

  29. 29

    将ASP.NET MVC区域添加到ASP.NET Web窗体现有项目

热门标签

归档