2015-02-02 2 views
0

У меня есть список возможных записей, хранящихся в базе данных. Я сортирую и отображаю эти записи в новое представление в зависимости от записи, помещенной в текстовое поле, или от нажатия на ссылку action html. Основная идея этого можно увидеть ниже.Использование HTML-ссылки для сортировки списка

public ActionResult Index(string sortOrder, string searchString, int? sortType) 
    { 

     if (!String.IsNullOrEmpty(searchString)) 
     { 
      if (sortType == 1) 
      { 
       //Sort the results strictly based on the HTML header options 
       applications = applications.Where(s => s.Business.Equals(searchString)); 
      } 
      else 
      { 
       //sort based on the input of the form 
       applications = applications.Where(s => s.Business.Contains(searchString) 
              || s.ApName.Contains(searchString)); 
      } 
     } 

     return View(applications.ToList()); 
    } 

Первая часть этого, если заявление активируется при нажатии на ссылку, как так,

<li>@Html.ActionLink("CITY", "index", "app", new {SearchString = "city", sortType=1}, null)</li> 

Хотя мой код работает, я просто интересно, если есть более «правильный» способ делать то, что я закодировал, без необходимости передавать переменную sortType, чтобы определить, следует ли сортировать на основе формы или actionlink. Я уверен, что то, что я сделал, это довольно плохой способ сделать это, но я очень новичок в этом.

+0

Возможно, лучше подходит для CodeReview http://codereview.stackexchange.com/. Вы можете получить лучший ответ. –

ответ

0

Я не уверен, что это то, что вам нужно, потому что ваш вопрос продолжает говорить о сортировке, но ваш код говорит о фильтрации. Вы можете попытаться указать значения по умолчанию, так что короткое замыкание операторов Where, когда эти критерии не заполнены. Пример:

public ActionResult Index(string city = null, string business = null){ 
    var model = applications 
     .Where(x => city == null || x.City.Contains(city)) 
     .Where(x => business == null || x.Business == business); 

    return View(model); 
}