单一解决方案中的多个Web项目

时间:2015-07-08 18:22:00

标签: c# asp.net-mvc

我有两个MVC Web项目的解决方案。主项目(HomeController)按预期工作。当我点击动作时,他们会找到视图等。但是当命中第二个项目控制器(PortalController)时,它永远不会找到视图,因为我认为它不会查看第二个项目视图文件夹。

如何让MVC在我正在使用的控制器项目的正确视图文件夹中查找?

在我的情况下,我需要它们是单独的Web项目,因为项目2是我想在几个站点上使用的通用管理系统,我想只是复制它或引用DLL。

我怎样才能做到这一点?

以下是我的解决方案布局的屏幕截图

enter image description here

这是我得到的错误

enter image description here

以下是控制器中/ Portal / Setup操作的代码。我正在做的就是在主页/索引上将URL更改为/ Portal / Setup,它似乎没有找到相应的视图

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

        return View();
    }

4 个答案:

答案 0 :(得分:2)

您必须确保两个Web项目都在运行。要在调试时将其设置为默认行为,请右键单击解决方案>属性。左侧选择启动项目。

这将为您提供选择启动项目或选择多个项目的选项。在您的情况下,您需要选择多个启动项目,每个网站。

enter image description here

答案 1 :(得分:1)

我打赌你需要设置Project(s)| Start Action指向应用程序的根URL,这样当你点击F5时,根目录总是被加载。

enter image description here

答案 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回答了这一部分