내 컨트롤러에는 클릭시 아약스를 통해 호출되는 두 가지 메소드가 있습니다. 둘 다 똑같은 일을합니다 (데이터베이스에서을 으로 검색). 검색된 데이터가 포함 된 모델과 함께 부분 뷰를 반환합니다. 유일한 차이점은보기입니다.컨트롤러에서 중복 코드 무시
public PartialViewResult FormA()
{
[...// Code]
return PartialView("_FormA", ModelWithData)
}
public PartialViewResult FormB()
{
[...// same Code as in FormA()]
return PartialView("_FormB", ModelWithData)
}
두보기 모두 동일한 데이터를 사용하지만 다른 것을 보여줍니다.
FormB()
이라면 FormA()
으로 불리는 것이 분명합니다.
두 번째 방법/데이터베이스 요청을 무시하는 방법이 있어야합니다. 추가 데이터베이스 요청으로 인해 응용 프로그램의 속도가 느려집니다. 당신의 도움에 대한
내 질문은 나에게 정말 바보 같다,하지만 해결 방법을 찾을 수 아니에요 ...
들으! 지금 당신의 점을 얻었다
public PartialViewResult ShowForm(string filter)
{
if(TempData["model"] == null)
{
[...// Code]
TempData["model"] = ModelWithData;
}
if(filter == "some_condition")
return PartialView("_FormA", TempData["model"] as ModelWithData);
else
return PartialView("_FormB", TempData["model"] as ModelWithData);
}
아래처럼 행동 방법에 필터의 일종을 전달하여 예 확인
이 정보를 바탕으로 나는 이것이 분명히 좋은 조언이라고 말할 수는 없지만 결과를 'FormA'에 캐시하고 'FormB'에서 다시 가져올 수 있다고 생각할 수 있습니다. 캐시에서 가져 오거나 필요에 따라 데이터베이스로 이동하는 새로운 방법을 소개합니다. – Crowcoder
둘 다 동일한 코드를 사용하면 결과를 캐시 또는 TempData에 저장해야 데이터베이스 요청을 줄일 수 있습니다. –
Cant는 개인 코드에서 공유 코드를 추출합니까? 또한 DB에서 검색 한 항목을 캐시 할 수도 있습니다. –