如何将 Select 框中的数据保存到 Entity Framework 数据库关系多对多

How to save data from Select box in Entity Framework Database relation Many to Many

如何在Entity Framework数据库关系多对多

中保存Select框中的数据

有两个 classes 一个武器和另一个用户..

public class 武器 { } public class 用户 { }

 public class User
        {              
            public int ID { get; set; }
            public string Name { get; set; }
            public string Type { get; set; }      
            }



 public class Wepon
{   public int ID { get; set; }
    public string Wepon_Name { get; set; }
    public int Power { get; set; }

}

使用 FormCollection 和模型应该具有多对多关系

用户Class

还有武器Class

public class User
        {
            public int ID { get; set; }
            public string Name { get; set; }
            public string Type { get; set; }
            **public List<Wepon> WeposInList { get; set; }**

            }



 public class Wepon
    {
        public int ID { get; set; }
        public string Wepon_Name { get; set; }
        public int Power { get; set; }
        public List<User> UsersHaveWeponsList { get; set; }// User the List for M to M
}
  • DBContext

     public class DbContexFor : DbContext
        {    
            public DbContexFor()
                : base("name=ConnectionStringName")
            {
            }
    
            public virtual DbSet<User> Users { get; set; }
            public virtual DbSet<Wepon> Wepons { get; set; }
        }
        }
    

    **

  • 控制器代码

**

  [HttpPost]
            [ValidateAntiForgeryToken]
            public ActionResult Create([Bind(Include = "ID,Name,Type")] User user, FormCollection formData)
            {

                if (ModelState.IsValid)
                {
                    var ss = formData["ShipFromCountries"].ToString();
 user.WeposInList = db.Wepons.Where(c => c.Wepon_Name == ss).ToList();
                    db.Users.Add(user);
                    db.SaveChanges();
                    return RedirectToAction("Index");
                }

                return View(user);
            }

和 Html 代码

@model enumVarAction.Models.User

@{

var list = ViewBag.MyList;
ViewBag.Title = "Create";

}

创建Html页面

@using (Html.BeginForm()) 
{
    @Html.AntiForgeryToken()

    <div class="form-horizontal">
        <h4>User</h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        <div class="form-group">
            @Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.Type, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Type, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Type, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.WeposInList, htmlAttributes: new { @class = "control-label col-md-2" })
            <select  id="ShipFromCountries" multiple="multiple" name="ShipFromCountries">
                <div class="col-md-10">

                    @foreach (var VARIABLE in list)
                {
                        <option value="@VARIABLE.Wepon_Name">@VARIABLE.Wepon_Name</option>
                    }
                </div>
            </select>
        </div>






        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </div>
    </div>
}

<div>
    @Html.ActionLink("Back to List", "Index")
</div>

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

**

  • 控制器调试

**

**

  • 数据是数据库

**