假設我在MVC中有一個默認項目。我將About
鏈接更改爲Ajax表單,以便它只加載頁面的這一部分。當然,我改變方法返回PartialView('About')
而不是View('About')
。但是,當用戶輸入並轉到名爲localhost:port/Home/About
的鏈接時會出現問題。現在它加載了一部分,但沒有佈局(沒有CSS,JS,菜單欄等)!我怎樣才能防止他進入這樣的頁面?或者,也許顯示一個錯誤頁面呢?甚至重定向他去View('About')
?期權是無止境的,但如何知道這次通話是以「錯誤」的方式?如何區分調用是否是ajax,並在MVC中相應顯示頁面?
回答
添加ChildActionOnly
屬性來控制方法,以便MVC不會讓用戶把它directly via http://localhost:port/Home/About
非常有趣!聽起來很有希望!當我從工作中回來時肯定會嘗試那個:) –
請求會發生什麼?它將在哪裏重定向? –
沒有。此URL不會被映射到控制器操作,因爲它被標記爲「ChildActionOnly」屬性。然而,可以使用'Html.Action(..)'幫助器來呈現部分內容,並且它將起作用,因爲此調用被限定爲正在執行的另一個操作的子項。 –
你可以在你的操作方法檢查的請求AJAX或不符合
Request.IsAjaxRequest()
,並採取任何行動你需要基於此。
這將檢查X-Requested-With頭是否已被調用客戶端設置爲XMLHttpRequest。
Detecting IsAjaxRequest() with ASP.NET MVC and JQuery Form Plugin/File Upload
爲@Zabavsky它似乎是一個重複...
另一個(很簡單)的解決方案可能是隻seprate方法。無論如何,你有獨立的意見。所以ajax調用將觸發AboutAjax()並呈現partialView和About()保持原樣。
- 1. ASP.NET MVC在新頁面中顯示ajax結果而不是UpdateTargetId
- 2. 如何區分當前頁面是否爲EPiServer頁面
- 3. 如何使用JavaScript在asp.net頁面顯示是/否按鈕
- 4. 如何確定HTML控件是否正在頁面中顯示?
- 5. 在ajax調用後在頁面上顯示響應
- 6. 在頁面顯示後如何查找元素是否存在
- 7. 在頁面中查找HTML並僅顯示相關部分
- 8. 如何在調用ajax時隱藏頁面並顯示加載div
- 9. 在MVC中,如何判斷頁面是否正在打印
- 10. 如何在MVC的另一個頁面中顯示html頁面的一部分
- 11. 如何測試一個元素是否顯示在頁面上
- 12. 如何檢查分配緩衝區的相應頁面是否在緩存或主內存中?
- 13. 我如何檢查用戶是否登錄或嘗試在jQuery中評分並顯示相應的消息後?
- 14. 未顯示應用程序頁面 - 是否與JavaScript有衝突?
- 15. 使用JavaScript檢查頁面是否顯示在瀏覽器中?
- 16. 如何使用ajax和symfony在樹枝分區中顯示pdf?
- 17. 是否可以在AIR應用程序中顯示網頁?
- 18. 如何檢查輸入是否是數字並相應調用函數?
- 19. 如何區分onDestroy是否會在onPause之後調用
- 20. 如何在extjs中調用ajax並在div內顯示json值?
- 21. 顯示頁面加載Ajax調用jQuery Mobile中的調整器
- 22. 檢查當前頁面是否是wordpress中的分類頁面?
- 23. 如何在多個頁面上使用一個Nav Bar代碼,但是當前頁面是否突出顯示?
- 24. 檢查url是否是應用程序頁面的一部分
- 25. 如何使用jquery ajax顯示來自aspx頁面的響應
- 26. 如何從MVC 2應用程序顯示Web窗體頁面?
- 27. 如何只迴應結果,而不是在Ajax調用的整個頁面
- 28. 您是否總是在Node js中使用jade來顯示html頁面
- 29. ajax調用MVC後在新標籤頁上顯示PDF C#
- 30. 如何分頁瀏覽頁面顯示?
可能重複[如何知道請求是否是asp.net mvc中的ajax?](http://stackoverflow.com/questions/3864179/how-to-know-if-the-request-is-ajax- in-asp-net-mvc) – Zabavsky
你爲什麼在意?如果用戶輸入該鏈接,那麼他應該得到他所得到的。 –
@JohnSaunders有趣的觀點! –