У меня есть веб-сайт, на котором есть PageContent, News, Events и т. Д., И у меня есть контроллер, который будет выполнять поиск.
В этом методе действия контроллера я предполагаю, что я делаю var results = SearchClass.Search(searchstring)
, чтобы не допустить логику контроллера.
Однако, поскольку я возвращаю разные результаты, потому что я ищу Новости, События и т. Д., Как мне вернуть результаты, поскольку они представляют собой разные модели. Я использую ViewModel и затем передаю это представлению? return View(SearchModel);
ОБНОВЛЕНИЕ: Я это выяснил, как вы думаете:
public ActionResult Search(string criteria)
{
var x = WebsiteSearch.Search(criteria);
return View(x);
}
public static class WebsiteSearch
{
public static SearchViewModel Search(string SearchCriteria)
{
return new SearchViewModel(SearchCriteria);
}
}
public class SearchViewModel
{
private string searchCriteria = String.Empty;
public IEnumerable<News> NewsItems
{
get { return from s in News.All() where s.Description.Contains(searchCriteria) || s.Summary.Contains(searchCriteria) select s; }
}
public IEnumerable<Event> EventItems
{
get { return from s in Event.All() where s.Description.Contains(searchCriteria) || s.Summary.Contains(searchCriteria) select s; }
}
public SearchViewModel(string SearchCriteria)
{
searchCriteria = SearchCriteria;
}
}