나는 C# asp.net MVC 프로젝트가 있습니다. 검색을 수행 중이며 검색 결과 중 하나의 세부 정보 페이지에서 검색 결과에 액세스하려고합니다.나중에 사용할 수 있도록 검색 결과 저장 - 결과보기에 액세스
이렇게하면 마지막 검색 결과의 다음 속성에 연결되는 세부 정보 페이지에 "< prev | next>"링크를 가질 수 있습니다.
내 접근 방식은 검색 결과 개체를 세션 변수에 저장하는 것이지만 실제로 액세스 할 코드를 파악할 수는 없습니다. 아래의 Session [ "SearchResults"]에서 감시 할 때 배열을 보유하고있는 것으로 보이는 "결과보기"에서 레코드를 볼 수 있습니다.
누군가 내가이 모든 잘못에 대해 생각하고 있다고 말하려고합니다. 나는 깨달을 때까지 기다릴 수 없습니다.
누군가 나에게 단지 공개 속성으로 저장소에 마지막 검색 결과를 저장해야한다고 제안했는데 그 것이 더 나은 옵션입니까? 아니면 누군가 내가해야 할 일을하는 데 더 좋은 방법을 추천 할 수 있습니까?
이
여기 내 컨트롤러public ActionResult Search(int? page, Search search)
{
search.regusApi = Convert.ToBoolean(ConfigurationManager.AppSettings["regusApiLiveInventory"]);
Session["SearchResults"] = MeetingRoomRepositoryWG.Search(search).AsPagination(page ?? 1, 7);
return View(new SearchResultsWG { SearchCriteria = search, Locations = MeetingRoomRepositoryWG.Search(search).AsPagination(page ?? 1, 7) });
}
public ActionResult NiceDetails(String suburb, String locationName, int id)
{
**Here I want to acceess the session variable**
return View(MeetingRoomRepositoryWG.RoomDetails(id).First());
}
입니다 저장소에서 코드입니다 :
public static List<Location> Search(Search search)
{
String LongLatString = search.LongLat;
LongLatString = LongLatString.Substring(1, LongLatString.Length - 2);
var LonLatSplit = LongLatString.Split(',');
var latitude = Convert.ToDecimal(LonLatSplit[0]);
var longitude = Convert.ToDecimal(LonLatSplit[1]);
using (var context = new MyContext())
{
var query = context.Locations.Include("Location_LonLats").ToList();
query.OrderBy(x => (Convert.ToDecimal(x.Location_LonLats.Lat) - latitude) * (Convert.ToDecimal(x.Location_LonLats.Lat) - latitude)
+ (Convert.ToDecimal(x.Location_LonLats.Lon) - longitude) * (Convert.ToDecimal(x.Location_LonLats.Lon) - longitude));
return query;
}
}
아직 사용자 수는 확실하지 않지만, 적절하다면 확장 성이 좋지 않을 수 있습니다. 검색을 통과하고 다음을 클릭 할 때 다시 수행하면 처음에 클릭 한 검색 결과를 알아야합니다. 내가 클릭 한 결과 번호를 검색 결과 페이지에 저장할 수 있다고 생각합니다. 페이지 매김을 통해 어떻게 검색 결과를 클릭했는지 알 수 있습니까? 이 정보를 가지고도 위와 같은 형식으로 검색 결과에 액세스해야합니다. (지금까지 할 수 없었던 검색 결과 ...) – iKode
검색 매개 변수를 '다음'및 '이전'링크의 URL 또는 다음 및 이전 버튼이 양식을 구성하고 검색 매개 변수를 양식 데이터로 포함 시키십시오. Ajax 호출도 가능합니다. – Joppe
검색 메서드가 IEnumerable을 반환하고 yield를 사용하여 데이터를 반환하면 Linq를 사용하여 훨씬 쉽게 페이지 매김을 수행 할 수 있습니다. 결과를 건너 뛰는 것만이 차선책이 될 것입니다. 어떻게 든 Skip 및 Take 매개 변수를 호출에 포함 할 수 있다면 가장 좋습니다. 검색 결과를 주문하는 것은 불행한 일로, 선주문해야합니다. – Joppe