【问题标题】:How can I pass a list of selected checkbox items and pass to the next View如何传递选定复选框项目的列表并传递到下一个视图
【发布时间】:2015-05-11 16:37:03
【问题描述】:

我在一个视图中列出电影项目,并想知道如何将通过复选框选择的任何电影传递到另一个视图,比如 SelectedMovies 视图。

我现在的模特:

public class Movie
{
    public int MovieID { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
}

控制器:

public ActionResult Movies()
{
        return View(rc.GetAll().OrderBy(m => m.Name));
} 
public ActionResult SelectedMovies()
{
        return View();
}

电影视图:

 @model IEnumerable<Application.Models.Movie>
 @using (Html.BeginForm("SelectedMovies","Site"))
 {
    @foreach (var item in Model)
    {
      <li>
         @Html.DisplayFor(modelItem => item.Name)
         @Html.DisplayFor(modelItem => item.Description)

         @Html.CheckBoxFor(modelItem => item.isSelected)  
      </li>
    }
 }

SelectedMovies 视图将只是一个包含已在 Movies 视图中选中的项目的视图。

【问题讨论】:

  • 不清楚你在问什么。您可以将所选项目保存在数据库中并重新填充视图,它将具有所选项目。请提供更多见解
  • 我做了一点修改,不知道如何使它更清晰

标签: asp.net asp.net-mvc razor checkbox


【解决方案1】:

感谢 Sachu(如果可以的话,+1 代表)我能够解决我的问题。它可能是也可能不是最好的解决方案,但现在它给了我想要的结果。

public class Movie
{
    public int MovieID { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
}

public class SelectedMovie
{
    public int MovieID { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
}

而不是使用@Html.CheckBoxFor 而是使用标准

<input id="chk-@item.MovieID" type="checkbox" name="chk_movie" value="@item.MovieID" />

对于 ActionResult:

[HttpPost]
public ActionResult SelectedMovies(IList<int> chk_movie)
{
    List<SelectedMovie> list = new List<SelectedMovie>();
    for (int i = 0; i < chk_movie.Count; i++ )
    {
         SelectedMovie sm = new SelectedMovie();
         Movie m = new Movie();
         m = RestClient.GetById(chk_movie[i]);
         sm.MovieID = m.MovieID;
         sm.Name = m.Name;
         list.Add(sm);
    }
    return View(list);
}

希望这对遇到类似问题的人有所帮助。

【讨论】:

    【解决方案2】:

    检查下面的代码..希望它有帮助

    在视图中,为所有复选框赋予相同的名称和唯一的值。

    <input type="checkbox" name="movie_id" value="@item.MovieID" > 
    
    In your controller  pass an IList with the name of the checkbox.
    
    public ActionResult display_selected_movies(IList<string> movie_id)
    {
    ......
    }
    

    您将获得一个列表,其中只有那些被选中的复选框的值。

    【讨论】:

    • 没关系,我知道了,我必须使用输入的名称,这有助于我传递 ID。
    【解决方案3】:
    public class Movie
    {
        public int MovieID { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
        public bool IsSelected {get; set;}
    }
    

    然后在视图中

    @Html.CheckBoxFor(modelItem => item.IsSelected)  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-01
      • 2015-06-15
      • 1970-01-01
      相关资源
      最近更新 更多