0

我有一个包含多个项目“组”的新解决方案。每个组包含一个云项目、一个 Web 角色项目和一个测试项目。所有 Web 角色项目都是 MVC4。

Web 角色之一是访问者的入口点。访问者将看到的部分内容应该来自解决方案中的其他 Web 角色。我无法让它工作,花了几个小时谷歌搜索后,我仍然无法解决它。也许任何人都可以在这个问题上提供帮助。

例如,我需要使用可以从其他 Web 角色之一获得的数据填充标题内容。我们称之为控制器HeaderController。主项目 ( HomeController) 中的控制器如下所示:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";


        //var headerController = new Generic.HeaderFooterContainer.Controllers.HeaderController();
        //var foo = headerController.Index().ExecuteResult();
        //ViewBag.Header = headerController.;

        return View();
    }

在评论中有一些我试图调试的东西。

这是主项目的页面布局。正文仍然是空的,因为这个问题只是关于可以从 ViewBag 或 ViewData 放置为 html 的页面标题,甚至可以使用自己的 @section。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>@ViewBag.Title</title>
        <link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
        <meta name="viewport" content="width=device-width" />
        @Styles.Render("~/Content/css")
        @Scripts.Render("~/bundles/modernizr")
    </head>
    <body>
        <div class="headerHolder">
            <div class="innertube">
                <div id="header">
                    @ViewBag.Header
                </div>
            </div>
        </div>

        <div class="contentHolder">
            <div class="innertube">
                <div id="content">
                    @RenderBody()
                </div>
            </div>
        </div>

        <div class="footerHolder">
            <div class="innertube">
                <div id="footer">
                </div>
            </div>
        </div>

        @Scripts.Render("~/bundles/jquery")
        @Scripts.Render("~/bundles/bms")
        @RenderSection("scripts", required: false)
    </body>
</html>

我面临的问题是我不知道应该如何进行这项工作。如何获取标题中的数据?我注意到的一些事情是:

  1. 如果我在其专用解决方案中运行 HeaderFooterContainer 项目,它可以正常工作(我可以获得 /Header 并在浏览器窗口中显示预期的响应)
  2. 如果我运行 Main 项目,我可以看到主页,但如果我要求 /Header,它可以找到控制器,但找不到视图。尽管它位于 HeaderFooterContainer 项目中,但它可能正在寻找主项目中的视图。
4

0 回答 0