簡體   English   中英

調用應在“布局”視圖中顯示的局部視圖的控制器

[英]Controller that calls a partial view that should display inside the Layout view

在標准MVC應用程序中,我們具有_Layout.cshtmlIndex.cshtml視圖。 現在想象一下,如果用戶在注冊后收到了一封電子郵件激活信息,現在他/她單擊了該鏈接。

該鏈接指向/ Account / ActivateAccount,在處理激活之后,我想將用戶重定向到顯示消息的Login.cshtml部分視圖。

我知道我可以通過TempData [“ Message”]傳遞消息,但是我不知道如何重定向到局部視圖,並在_Layout.cshtml中顯示該視圖,而不是自己顯示。

至少當我調用RedirectToAction(“ Login”,“ Home”)時,這就是發生的情況

注意:所有基於“主”的部分視圖都顯示在<div id =“ divmain”>中,而我的理想解決方案是能夠從控制器確定應該在該div中顯示什么視圖。

調用部分視圖從另一個Controller內部顯示的正確方法是什么?

我不確定我是否完全理解問題,但我想您要問的是您是否可以從_layout調用局部視圖? 這可以通過@Html.Action()幫助器完成。 它將調出您指定的控制器和方法並插入結果。 您調用的方法只是PartialResult,它將返回帶有所需數據的局部視圖。

這與@Html.Partial()相反,后者將使用您提供的任何數據將局部視圖呈現在適當的位置,而無需通過控制器返回。

編輯:

總結對這個答案的評論,似乎我誤解了要求。 用戶收到電子郵件,然后單擊鏈接以激活其注冊。 處理該請求的控制器操作會激活用戶,然后需要將其重定向到某些內容。 在這種情況下,已經有部分視圖可以達到目的,但是由於某些原因而無法直接重定向到該視圖。 我的建議是僅創建一個包含@Html.Partial()調用的新View,以將部分內容基本上包裝在完整視圖頁面中。

然后,處理單擊的操作方法可以直接返回該視圖,或者,如果您認為鏈接的單擊是“發布”,因為它通過驗證用戶來更改應用程序模型,則您將創建一個新的控制器操作並return RedirectToAction()直接return RedirectToAction() 這就像遵循Post,Redirect,Get方法一樣,並且如果用戶嘗試刷新“已激活”頁面,則可以避免某些問題。 它還將提供對URL命名的更多控制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM