美文网首页
@Html.DropDownListFor获取用户选中的数据并传

@Html.DropDownListFor获取用户选中的数据并传

作者: 垃圾简书_吃枣药丸 | 来源:发表于2017-03-19 19:22 被阅读1741次

    情况:

    一张Movie表,一张Level表
    当添加Movie信息的时候,属性Movie.level从Level表获取,并以DropDown的形式显示,用户填写好信息之后获取用户选中的值提交到后台,保存到数据库。

    获取数据
    ** 后台MovieController **

    public ActionResult Create()
            {
                MovieDBContext dbContext = new MovieDBContext();
                ViewBag.level = new SelectList(dbContext.Levels, "LevelName", "LevelName");
               //将数据库Level表的数据填充到SelectList并通过ViewBag传到前端
                return View();
            }
    

    ** 前端 展示数据**

    <div class="form-group">
                <div class="control-label col-md-2">
                    <b>电影等级</b>
                </div>
                <div class="col-md-10">
                    @Html.DropDownListFor(Model => Model.level.LevelName,(IEnumerable<SelectListItem>)ViewBag.level)
                  //因为Movie.level 保存的其实是一个Level类型的对象,但是Dropdown选中的值是一个string值,所以我们将选中的值赋给Movie.level.LevelName
                </div>
            </div>
    

    ** 后台处理数并添加到数据库 **

     [HttpPost]
            public ActionResult Create(Movie movie)
            {
                MovieDBContext dbContext = new MovieDBContext();
                Level l = dbContext.Levels.FirstOrDefault(u => u.LevelName == movie.level.LevelName);
                //通过在前端得到的LevelName属性反过来查到这个对象,并且赋给movie.level 
                movie.level = l;
                dbContext.Movies.Add(movie);
                dbContext.SaveChanges();
                return RedirectToAction("ListTemplete");
            }
    

    ** List展示数据的时候 **

    @foreach (var item in Model) {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.Title)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.ReleaseTime)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Genre)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Price)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.level.LevelName) 
                 //item.level.LevelName
            </td>
            <td>
                @Html.ActionLink("Edit", "Edit", new { id=item.ID }) |
                @Html.ActionLink("Details", "Details", new { id=item.ID }) |
                @Html.ActionLink("Delete", "Delete", new { id=item.ID })
            </td>
        </tr>
    

    相关文章

      网友评论

          本文标题:@Html.DropDownListFor获取用户选中的数据并传

          本文链接:https://www.haomeiwen.com/subject/nklvnttx.html