当调用带条形码参数的方法时,RedirectToAction绝对没有效果。我可以看到它确实返回到URL中的那条路线,但模型没有刷新,它显示过时的数据。
在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");
}
答案 0 :(得分:2)
也许重定向会转到缓存页面。
你能尝试用
装饰SRPickCollectionItems吗?[OutputCache(Duration = 0)]
答案 1 :(得分:1)
你似乎没有返回post方法,只是一个get,因此除非你通过actionlink在get调用中将条形码作为查询字符串参数发送,否则调用Redirect的方法并不明显或链接标记。
通常你会有两个名为SRPickCollectionItems的方法。 Get方法(您已经拥有)加载视图,post方法(您缺少)处理回发。那么post方法就是......
[HttpPost]
public ActionResult SRPickCollectionItemsstring barcode){
DataLayer.Instance.AddStockroomFoundItem(barcode, ApplicationState.CollectionId, ApplicationState.AssistantNumber);
return RedirectToAction("SRPickCollectionItems");
}