0
我有水果的ASCX控制包含下面的代碼:路過原來的控制器和動作名稱 - MVC
<div id = "fruits">
....
Ajax stuff1 UpdateTargetId = "fruits"
Ajax stuff2 UpdateTargetId = "fruits"
<%Html.RenderPartial("PagerAjax", (Pager)ViewData["pager"]); %>
</div>
現在這種水果的控制可以在許多網頁的出現,尋呼機需要知道什麼用戶打開的頁面,以便它可以相應地拉取下一組水果。例如,如果我在紅色水果頁面上,那麼PagerAjax應該知道我只是拉出紅色水果。所以,基本上我需要知道ControllerName(假設它是家)和actionName(假設它是redFruits())。 (實例似乎效率不高,但它使真正的目的意義)。現在,我可以做這樣的事情:
<%Html.RenderAction("PagerAjax", (Pager)ViewData["pager"], ViewContext.RouteData.Values["action"], controllerFilter = ViewContext.RouteData.Values["controller"] }); %>
然而,正如你注意到了,上面的RenderAction是被阿賈克斯更新DIV中回調,這意味着它將包含Ajax內容的操作和控制器,而不是原始URL。
什麼應該是有效的解決方法?
但Html.RenderPartial是那將阿賈克斯stuff1或阿賈克斯stuff2,這意味着計算機[「originalAction」]將空更新的DIV中。因此,對於更新水果div的每個Ajax調用,我都應該傳遞ViewData [「originalAction」],以便它可以再次設置ViewData [「originalAction」],對不對? – TPR 2010-11-09 22:12:28
是的,您需要每次在AJAX操作中設置ViewData [「originalAction」] = originalAction'。 'originalAction'參數需要在每次AJAX調用時傳遞,當然會始終指向相同的值,因爲父頁面不會更改。 – 2010-11-09 22:28:42