簡體   English   中英

如何將控制器重用於多個局部視圖?

[英]How can I reuse a controller for multiple partial views?

我想根據發送到控制器的內容動態選擇局部視圖,並對其進行了管理,但我覺得我是a)過於復雜,b)不確定如何輕松地獲取所有頁面鏈接。 每個都將依次解決。 如果我在下面犯了一個錯誤,請忽略,這是內存中的錯誤! 在家里,這一切都可行,我在澄清是否有更好的方法!

首先,我做了什么:

我有一個控制器:

private Dictionary<int, string> pagesForFolder = new Dictionary<int, string>() {
         ... here I have my list of pages (index and pagename pairs)
}

public ActionResult Test(int id = -1)
{
   try {
        string pageName = "";
        var result = pagesForFolder.TryGetValue(id, out pageName);
        if(result) 
           string directiory = "~Views/folderA/_" + pageName +".cshtml";
           return PartialView(directory);
    }
    catch(Exception ex) {  ... }
    return View();
}

然后在folderA中,我擁有網站那部分的所有部分視圖。 我有很多部分,每個部分有1個控制器。 但是,我認為這不會擴展得太好,因為每次添加頁面時都必須繼續重建。 將頁面存儲在數據庫中會更好嗎?

我認為您目前的做法是很合理的。 我認為您提到的問題是,無論何時向字典中添加或刪除新條目,都必須重新構建應用程序。

作為解決方案,您可以將頁面名稱存儲在db中,並在需要時進行檢索。

不用硬編碼的字典,試試這樣的東西...

在您的控制器中。

public ActionResult Test(int id = -1)
{
   try {
        string pageName =  GetYourPageFromDB(id);

        if(!string.IsNullOrEmpty(pageName)) 
                   string directiory = "~Views/folderA/_" + pageName +".cshtml";
           return PartialView(directory);
    }
    catch(Exception ex) {  ... }
    return View();
}

這可能不是確切答案,請嘗試以下操作...

暫無
暫無

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

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