如何传递所选复选框项的列表并传递到下一个视图

时间:2015-05-11 00:50:12

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

我在一个视图中列出了电影项目,想知道我如何将通过复选框选择的任何电影传递到另一个视图,比如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视图将是包含在电影视图中检查的项目的视图。

3 个答案:

答案 0 :(得分:1)

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

public class MyWebView extends WebView {
    private Context context;
    private GestureDetector gestDetector;

    public MyWebView(Context context) {
        super(context);

        this.context = context;
        gestDetector = new GestureDetector(context, gestListener);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        return gd.onTouchEvent(event);
    }

    GestureDetector.SimpleOnGestureListener gestListener= new GestureDetector.SimpleOnGestureListener() {
        public boolean onDown(MotionEvent event) {
            return true;
        }

        public boolean onFling(MotionEvent event1, MotionEvent event2, float velocityX, float velocityY) {
            //if (event1.getRawX() > event2.getRawX()) {
            //    show_toast("swipe left");
            //} else {
            //    show_toast("swipe right");
            //}
            //you can trace any touch events here
            return true;
        }
    };

    void show_toast(final String text) {
        Toast t = Toast.makeText(context, text, Toast.LENGTH_SHORT);
        t.show();
    }
}

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

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; }
}

对于ActionResult:

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

希望这可以帮助任何有类似问题的人。

答案 1 :(得分:0)

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

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

<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)
{
......
}

您将只获得所选复选框的值列表。

答案 2 :(得分:0)

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)