[英]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.