2009-07-24 51 views
0

我在我的控制器方法中使用Rhino Commons UnitOfWork。第一個請求檢索數據並正確顯示。我的問題是,當我更改URL中的參數時,他們沒有傳遞給控制器​​。使用前一個請求的值。犀牛公用UnitOfWork和ASP.NET MVC控制器似乎是緩存參數

我的控制器方法如下:

public ActionResult List(int year, int? month, int? day) 
    { 
     IList<Meeting> meetings; 

     using (UnitOfWork.Start()) { 
      meetings = _meetingRepository.GetByDate(year, month, day); 
     } 

     return View("List", meetings); 
    } 

的Global.asax.cs中從UnitOfWorkApplication

繼承初始請求到〜/會議/ 2009返回全年所有會議2009年 的對〜/ meetings/2007的下一個請求將返回2009年的所有會議。

在Visual Studio中進行調試時發生這種情況。我沒有機會遷移到IIS以查看是否出現同樣的問題。

我在使用UnitOfWork時做錯了什麼,或者它可能成爲其他地方的問題?

回答

1

我的猜測是,整個UnitOfWork事情是一個紅鯡魚......控制器傳遞來自先前請求的值聽起來像是控制器的同一實例正被重複用於多個請求。 ASP.NET MVC框架的工作原理是每個請求都由控制器的新實例處理。

所以,考慮到這一點,你如何構建你的控制器?例如,如果您使用Spring.NET等IoC框架,請確保您的控制器是而不是單身。

+0

我在Castle Windsor使用了一些示例代碼。修改創建控制器的方法修復了它。感謝您指點我正確的方向。 – rjester 2009-07-24 12:52:44