2011-12-08 159 views
2

從我的角度來看,我通過$ .ajax發送了一個JSON對象到我的控制器以將其保存在數據庫中。 如果一切都成功了,我想重定向到另一個將顯示不同視圖的操作。

如果我使用以下代碼:

return RedirectToAction("CreatePage", "Survey", new {id = question.PageId}); 

執行前進到調查控制器返回一個視圖,但它沒有示出。

我讀過一些文章,說它不可能通過ajax重定向。

我至今使用的解決方案是通過JavaScript重定向這樣的:

success: function (ret) { 
      window.location.href = "/Survey/CreatePage/" + $("#PageId").val(); 
     } 

雖然這總是工作,有時我需要刷新CreatePage視圖顯示最近所做的更改。

有關如何更好地解決此問題的任何想法?

在此先感謝

+0

我的第一個想法是爲什麼這是用Ajax完成的?是否曾經有過這樣的情況,在帖子後不會重定向?你提到它會在所有成功的情況下重定向,但是你可以處理重定向到錯誤頁面,或者在錯誤消息的同一頁面。在所有情況下都不會調用Ajax - 它是一種工具,只能在適當的時候使用。 – mccow002

+0

您是否期待來自AJAX請求的HTML或JSON?我問的原因是,如果你接受JSON,你理論上可以爲每個AJAX JSON請求提供一個包裝器響應,這個響應具有一些常見的屬性,例如:.Success,.Message,.Data和.Redirect。你的JS可以評估AJAX發回的東西是否需要更新消息或者重定向。 –

回答

1

由於mccow002建議,我是不是真的需要,使通過AJAX該部分的呼叫。在研究了所提出的解決方案之後,我意識到我可以簡單地通過表單提交它。我的困惑來了,因爲我有一個保存,並繼續編輯和保存。爲了保存並繼續我使用AJAX調用,但對於提交表單的保存選項是可以的。

非常感謝您的幫助。

0

不是重定向到新的頁面,你可以在頁面從.NET代碼發送呈現的HTML返回到客戶端並加載HTML,這樣$("#main").load(renderedHtml)

但是,刷新頁面,你可以編寫一個簡單的腳本,以指定的時間間隔運行並刷新頁面頁面。

0

您可以在CreatePage操作上使用[OutputCache],以便它不會緩存頁面或只緩存很長時間。

output caching