2011-05-21 22 views
2

我使用jquerymobile和asp.net MVC3剃鬚刀。我有點新本,但盤算的事情了,我有一個非常基本的路由表,只用忽略.axd資源路線和缺省路由asp.net mvc3 RouteToAction()沒有帶我到任何地方

routes.MapRoute(
"Default", 
"{controller}/{action}/{id}", 
new { controller = "Home", action = "Index", id = "", UrlParameter.Optional } 
); 

我有一個動作鏈接,在一個工作的.ascx頁:

@Html.ActionLink("Log On", "LogOn", "Account", null, new { @class = "ui-btn-right" }) 

現在,當我到登錄頁面,我完成驗證帳戶,我需要把它們發送到首頁,/Home/Home如果我在地址欄中鍵入該作品,但我似乎無法讓我的重定向在帳戶控制器中工作:return RedirectToAction("Home", "Home");

感謝您的幫助!

+1

我正在努力與確切的問題,你找到解決辦法,請回答你的問題。我正在使用您正在使用的相同技術。 – 2011-07-15 11:34:51

+0

@Sutikshan Dubey - 不,我沒有,我會拋出一個賞金,看看是否有人可以幫助:) – Brett 2011-07-15 18:59:17

+1

首先,我不知道這是否會幫助你的問題,所以我會構成它作爲評論而不是答案,但是你的默認路由設置有點奇怪。 ID = 「」,UrlParameter.Optional 應該是: ID = UrlParameter.Optional – 2011-07-20 22:18:37

回答

3

聽起來好像你可能是通過ajax從/ Account/LogOn發佈你的表單。這意味着當你return RedirectToAction("Home", "Home");,頁面不會改變。所以你只需要在表單提交中不使用ajax。如果我的猜測錯誤,請發佈更多代碼,以便我們瞭解問題所在。

從文檔中可以看出,jQuery Mobile自動處理通過ajax的表單帖子。爲防止出現這種情況,請將data-ajax="false"屬性添加到表單元素。這裏的文檔:http://jquerymobile.com/test/docs/forms/forms-sample.html

+0

我使用JqueryMobile,所以是的,我敢肯定它做一個ajax職位。有沒有一種很好的方法來解決這個問題,使用JqueryMobile? – Brett 2011-07-16 03:09:55

+0

好點,編輯顯示解決方案的答案。 – Milimetric 2011-07-16 03:15:57

+0

作爲一個方面說明,我不熟悉jQuery手機,所以它可能是你想通過ajax發佈,然後只是用你的成功函數傳回你的頁面。 – Milimetric 2011-07-16 03:16:46

1

鑑於什麼是寫在documentation,你可以把你的代碼放入一個表單元素並將其動作屬性設置爲/ Account/LogOn?爲了做到這一點,你可能必須將你的ActionLink轉換爲一個按鈕。

1

可以在控制器檢查Ajax請求:

if(Request.IsAjaxRequest()) 
{ 
    //send json object and do navigate in client 
    return Json(new {IsLogged = true}); 
} 
else 
{ 
    //send redirect html code to browser 
    return RedirectToAction("Home", "Home"); 
} 

並在客戶端,檢查JSON結果,如果你的jQuery AJAX發佈形式。 我不使用jquerymobile,所以我不知道它如何在客戶端工作。

+0

但我希望ajax請求返回頁面,因爲jQueryMobile的客戶端通過ajax獲取新頁面。 – Brett 2011-07-21 12:06:26

相關問題