2015-01-14 2 views
1

Я делаю базовое приложение Movie MVC. У меня есть сортировка, которая будет отображать фильмы в порядке MovieId на домашней странице, в представлении есть ссылка, которую вы можете нажать, чтобы изменить порядок воспроизведения фильмов в алфавитном порядке на основе имени фильма. Однако, когда я перехожу на другую страницу и позже вернусь, сортировка будет всегда возвращаться к организации MovieId, есть ли способ сохранить сортировку в алфавитном порядке, если я уйду и вернусь на главную страницу?Как сохранить сортировку страницы бритвы в MVC?

public class HomeController : Controller 
{ 
    private MovieDb db = new MovieDb(); 

    public ActionResult Index(string sort, string Search_Data) 
    { //Variable sort for sorting 

     IQueryable<Movie> movie = db.Movies; 

     ViewBag.SortingName = String.IsNullOrEmpty(sort) ? "Name_Description" : ""; 

     //Search bar 
     if (!String.IsNullOrEmpty(Search_Data)) 
     { 
      movie = movie.Where(s => s.MoviesName.Contains(Search_Data)); 
     } 
     //Search bar 
     var albu = from alb in db.Movies select alb; 
     { 
      albu = albu.Where(alb => alb.MoviesName.ToUpper().Contains(Search_Data.ToUpper())); 
     } 

     //Sorting in switch 
     switch (sort) 
     { 
      case "Name_Description": 
       movie = movie.OrderBy(alb => alb.MoviesName); 
       break; 
      default: 
       movie = movie.OrderBy(alb => alb.MovieID); 
       break; 
     } 
     return View(movie.ToList()); 
    } 

    public ActionResult Details(int id = 0) 
    { 
     Movie m = db.Movies.Find(id); 
     if (m == null) 
     { 
      return HttpNotFound(); 

     } 
     else 
     { 
     //HEY SHOW ME ACTORS 
     m.Actors = (from e in db.Actors 
        where e.MovieID.Equals(id) 
        select e).ToList(); 
     } 
     //m.Actors.Count(); 
     return View(m); 
    } 

    #region Create Movie 

    public ActionResult Create() 
    { 
     return View(); 
    } 

    [HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Create(Movie movie) 
    { 
     if (ModelState.IsValid) 
     { 
      db.Movies.Add(movie); 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 

     return View(movie); 
    } 

    #endregion 

    #region Edit Movie 
    public ActionResult Edit(int id) 
    { 
     Movie movie = db.Movies.Find(id); 
     if (movie == null) 
     { 
      return HttpNotFound(); 
     } 
     return View(movie); 
    } 

    [HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Edit(Movie movie) 
    { 
     if (ModelState.IsValid) 
     { 

      db.Entry(movie).State = EntityState.Modified; 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 
     return View(movie); 
    } 
    #endregion 

    #region Delete Movie 

    public ActionResult Delete(int id) 
    { 
     Movie movie = db.Movies.Find(id); 


     return View(movie); 
    } 

    [HttpPost, ActionName("Delete")] 
    [ValidateAntiForgeryToken] 
    public ActionResult DeleteConfirmed(int id) 
    { 
     Movie movie = db.Movies.Find(id); 
     db.Movies.Remove(movie); 
     db.SaveChanges(); 
     return RedirectToAction("Index"); 
    } 

    #endregion 
} 

Здесь Главная страница

<h2>Movies</h2> 
<p> 
@Html.ActionLink("All Actors", "Index", "Actor", null, new { @class = "btn btn-success" }) 
</p> 

<p> 
    @Html.ActionLink("Create New", "Create", null, new { @class = "btn btn-primary" }) 
</p> 

@using (Html.BeginForm("Index", "Home", FormMethod.Get)) 
{ 
    <p> 
     Search Name: @Html.TextBox("Search_Data") 
     <input type="submit" value="Filter" /> 
    </p> 
} 

@Html.ActionLink("Rearrange Alphabetically", "Index", new { sort = ViewBag.SortingName}) 

<div class="table-responsive" > 
<table class="table table-striped"> 
    <tr class="info"> 
     <th> 
      @Html.DisplayNameFor(model => model.MoviesName) 
     </th> 
     <th> 
      @Html.DisplayNameFor(model => model.Description) 
     </th> 
     <th></th> 
    </tr> 

    @foreach (var item in Model) 
    { 

     <tr> 
      <td> 
       <a href="@Url.Action("Details", null, new{id = item.MovieID})">@Html.DisplayFor(modelItem => item.MoviesName)</a> 
      </td> 
      <td> 
       @Html.DisplayFor(modelItem => item.Description) 
      </td> 
      <td> 
       <div class="form-group"> 
        <div class="btn-group" data-toggle="buttons"> 
         <label class="pdsa-radiobutton btn btn-warning active"> 
          <span class="glyphicon glyphicon-pencil"></span> 
          @Html.ActionLink("Edit", "Edit", new { id = item.MovieID }) 
         </label> 
        </div> 
       </div> 





</td> 
      <td> 
       <div class="form-group"> 
        <div class="btn-group" data-toggle="buttons"> 
         <label class="pdsa-radiobutton btn btn-danger active"> 
          <span class="glyphicon glyphicon-minus"></span> 
          @Html.ActionLink("Delete", "Delete", new { id = item.MovieID }) 
         </label> 
        </div> 
       </div> 
      </td> 
     </tr> 
    } 

    </table> 
</div> 



@section scripts 
{ 
<script> 
    $(function() {toastr.info("Click Movie for details") }) 
    </script> 
} 

Заранее спасибо за любую помощь данной

+0

ли вы хотите, чтобы по умолчанию сортировка по алфавиту? – haley

+0

@haley, если я нажму ссылку для его сортировки в алфавитном порядке, а затем, если я покину страницу, а затем вернусь на домашнюю страницу на более позднем этапе, я хочу, чтобы она оставалась отсортированной в алфавитном порядке. На данный момент, если я покину страницу и позже вернусь, она вернется к организации MovieID – drapu

ответ

2

Вы можете хранить отсортированный поле в сеансе, чтобы знать, если пользователь сортированные или нет.

Изменение от этого

//Sorting in switch 
    switch (sort) 
    { 
     case "Name_Description": 
      movie = movie.OrderBy(alb => alb.MoviesName); 
      break; 
     default: 
      movie = movie.OrderBy(alb => alb.MovieID); 
      break; 
    } 
    return View(movie.ToList()); 

К этому:

 if (Session["sort"] == null) 
     { 
      switch (sort) 
      { 
       case "Name_Description": 
        movie = movie.OrderBy(alb => alb.MoviesName); 
        Session["sort"] = sort; 
        break; 
       default: 
        movie = movie.OrderBy(alb => alb.MovieID); 
        break; 
      } 
     } 
     else 
     { 
      movie = movie.OrderBy(alb => alb.MoviesName); 
     } 
Смежные вопросы