我有两个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();
}
最佳答案
您不能将两个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的
AreaRegistration.RegisterAllAreas()
方法中使用Application_Start()
注册所有MVC区域。之后,您可以使用第一个
Portal
作为区域名称访问/ Portal / Setup(在本例中为/ Portal / Portal / Step),可以在PortalAreasRegistration
中进行更改。关于c# - 单个解决方案中的多个Web项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31300655/