我有两个MVC Web项目的解决方案。主项目(HomeController)按预期工作。当我点击动作时,他们会找到视图等。但是当命中第二个项目控制器(PortalController)时,它永远不会找到视图,因为我认为它不会查看第二个项目视图文件夹。
如何让MVC在我正在使用的控制器项目的正确视图文件夹中查找?
在我的情况下,我需要它们是单独的Web项目,因为项目2是我想在几个站点上使用的通用管理系统,我想只是复制它或引用DLL。
我怎样才能做到这一点?
以下是我的解决方案布局的屏幕截图
这是我得到的错误
以下是控制器中/ Portal / Setup操作的代码。我正在做的就是在主页/索引上将URL更改为/ Portal / Setup,它似乎没有找到相应的视图
[HttpGet]
public ActionResult Setup()
{
if (_portalService.GetModerators().Any())
return RedirectToAction("Index");
return View();
}
答案 0 :(得分:2)
您必须确保两个Web项目都在运行。要在调试时将其设置为默认行为,请右键单击解决方案>属性。左侧选择启动项目。
这将为您提供选择启动项目或选择多个项目的选项。在您的情况下,您需要选择多个启动项目,每个网站。
答案 1 :(得分:1)
我打赌你需要设置Project(s)| Start Action指向应用程序的根URL,这样当你点击F5时,根目录总是被加载。
答案 2 :(得分:1)
您不能在同一级别拥有两个MVC项目,作为替代方案,您可以将Typhoeus.Portal.Web注册为MVC区域,并调用/ [AreaName] / Portal / Setup而不是调用/门户网站/设置。
要使Typhoeus.Portal.Web成为MVC区域,您可以添加PortalAreasRegistration继承自AreasRegistration。
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作为项目参考,并在&{39} Global.asax.cs&的AreaRegistration.RegisterAllAreas()
方法中使用Application_Start()
注册所有MVC区域#39;
执行此操作后,您可以使用第一个Portal
作为区域名称访问此Portal / Portal / Portal / Step中的/ Portal / Setup,您可以在PortalAreasRegistration
中更改此内容。
答案 3 :(得分:0)
右键点击您的项目 - > property - > web - >项目网址 您可以找到第二个项目URL并使用它,但在加载两个项目后 用户:Dleh回答了这一部分