簡體   English   中英

單個解決方案中的多個Web項目

[英]Multiple Web Projects in a Single Solution

我有兩個MVC Web項目的解決方案。 主項目(HomeController)正常工作。 當我點擊動作時,他們會找到視圖等。但是,當點擊第二個項目控制器(PortalController)時,它永遠不會找到視圖,因為我認為它不在第二個項目views文件夾中尋找。

我如何使MVC在我要點擊的控制器項目的正確視圖文件夾中顯示?

在我的情況下,我需要將它們作為單獨的Web項目,因為第二個項目是一個通用管理系統,我想在多個站點上使用,並且我想將其復制或引用DLL。

我該如何實現?

這是我的解決方案布局的屏幕截圖

在此處輸入圖片說明

這是我得到的錯誤

在此處輸入圖片說明

這是控制器中/ Portal / Setup操作上的代碼。 我正在做的就是在“主頁” /“索引”上將URL更改為/ Portal / Setup,但似乎沒有找到相應的視圖

    [HttpGet]
    public ActionResult Setup()
    {
        if (_portalService.GetModerators().Any())
            return RedirectToAction("Index");

        return View();
    }

您必須確保兩個Web項目都在運行。 要將其設置為調試時的默認行為,請右鍵單擊解決方案>屬性。 選擇左側的啟動項目。

這將使您可以選擇啟動項目,也可以選擇多個。 對於您的情況,您想選擇每個網站上的多個啟動項目。

在此處輸入圖片說明

您不能將兩個MVC項目保持在同一級別,或者,您可以將Typhoeus.Portal.Web注冊為MVC區域,然后調用/ [AreaName] / Portal / Setup而不是調用/ Portal / Setup。

要使Typhoeus.Portal.Web成為MVC區域,可以添加從AreasRegistration繼承的PortalAreasRegistration。

public class PortalAreasRegistration : AreaRegistration
{
    public override string AreaName
    {
        get
        {
            return "Portal";
        }
    }

    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "Portal_default",
            "Portal/{controller}/{action}/{id}",
            new { controller = "Portal", action = "Index", id = UrlParameter.Optional }
        );
    }
}

在Typhoeus.Personal.Web中,添加Typhoeus.Portal.Web作為項目引用,並在Global.asax.cs的Application_Start()方法中的AreaRegistration.RegisterAllAreas()中注冊所有MVC區域。

這樣做之后,您可以使用第一個Portal作為區域名稱訪問/ Portal / Setup(在本例中為/ Portal / Portal / Step),可以在PortalAreasRegistration進行更改。

我敢打賭,您需要將Project(s)| Start Action設置為指向應用程序的根URL,以便在您按F5鍵時始終加載根。

在此處輸入圖片說明

右鍵單擊您的項目->屬性-> Web->項目URL,您可以找到第二個項目URL並使用它,但是在加載兩個項目用戶之后:Dleh回答了這一部分

暫無
暫無

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

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