2012-11-23 2 views
0

barcode 매개 변수가있는 메서드를 호출하면 RedirectToAction이 전혀 영향을주지 않습니다. URL의 해당 경로로 실제로 돌아가는 것을 볼 수 있지만 모델이 새로 고쳐지지 않고 부실 데이터가 표시됩니다.RedirectToAction이 효과가없는 이유

SQL Server 프로파일 러에서 새 데이터를 가져 오기 위해 호출이 수행되고 있지 않음을 알 수 있습니다.

어떻게해야합니까?

우연히 : public ActionResult SRScanItem(string barcode)에 대한 호출 자체가 다른 컨트롤러의 RedirectToAction의 결과입니다.

나는 같은 컨트롤러의 다른 곳에서 RedirectToAction("SRPickCollectionItems")에 대한 전화를 몇 통 가지고 있으며이 모든 것이 정상적으로 작동합니다.

어떤 원인 일 수 있습니까?

public ActionResult SRPickCollectionItems() 
{ 
    IEnumerable<ISRPickingItemSummary> items = 
     SRPickingItemsViewModel. 
     GetDisplayableChunk(ApplicationState.CollectionId.ToString(), 
          ApplicationState.AssistantNumber); 

    return View(items);    
} 

public ActionResult SRScanItem(string barcode) 
{ 
    DataLayer.Instance.AddStockroomFoundItem(barcode, ApplicationState.CollectionId, ApplicationState.AssistantNumber); 
    return RedirectToAction("SRPickCollectionItems"); 
} 

답변

2

리디렉션이 캐시 된 페이지로 이동했을 수 있습니다.

당신은 단지 그래서 당신이하지 않는 리디렉션와 메소드가 호출지고 어떻게하지 분명 얻을, 당신은 포스트 방법으로 돌아 있지 않은 것 같습니다 시도하고

[OutputCache(Duration = 0)] 
+0

당신은 절대적인 다이아몬드 - 그것을 정렬했습니다 ... –

1

와 SRPickCollectionItems을 장식 할 수 actionlink 또는 link 태그를 통해 get 호출에서 쿼리 문자열 매개 변수로 바코드를 보냅니다.

일반적으로 SRPickCollectionItems라는 두 가지 메서드가 있습니다. (이미 가지고있는) Get 메서드는 뷰를로드하고,없는 포스트 메서드는 포스트 백을 처리합니다. 포스트 방법은 이렇게 될 것입니다 ...

[HttpPost] 
public ActionResult SRPickCollectionItemsstring barcode){ 
    DataLayer.Instance.AddStockroomFoundItem(barcode, ApplicationState.CollectionId,    ApplicationState.AssistantNumber); 
    return RedirectToAction("SRPickCollectionItems"); 
} 
+0

팁에 대해 많은 감사드립니다. 내가 본 적이있는 코드의 다양한 비트에 [HttpPost] 장식을 보았지만 언제 어디에서 사용할 지 확신하지 못했습니다. –

관련 문제