いくつかのプロジェクト「グループ」を含む新しいソリューションがあります。各グループには、クラウド プロジェクト、Web ロール プロジェクト、およびテスト プロジェクトが含まれます。すべての Web ロール プロジェクトは MVC4 です。
Web ロールの 1 つは、訪問者のエントリ ポイントです。訪問者が見るものの一部は、ソリューション内の他の Web ロールから取得する必要があります。私はそれを機能させることができず、グーグルで数時間を費やした後でも解決できません。たぶん、誰でもこの問題に役立つでしょう。
たとえば、他の Web ロールの 1 つから取得できるデータをヘッダー コンテンツに入力する必要があります。そのコントローラーを呼び出しましょう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 から、または独自の @section から html として配置できるページ ヘッダーに関するものであるため、本文はまだ空です。
<!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>
私が直面している問題は、これを機能させる方法がわからないことです。ヘッダーのデータを取得するにはどうすればよいですか? 私が気づいたいくつかのことは次のとおりです。
- 専用ソリューションで HeaderFooterContainer プロジェクトを実行すると、問題なく動作します (/Header を取得して、ブラウザー ウィンドウに表示される期待される応答を取得できます)。
- Main プロジェクトを実行すると、ホームページが表示されますが、/Header を要求すると、コントローラーは見つかりますが、ビューは見つかりません。HeaderFooterContainer プロジェクトにありますが、メイン プロジェクトでビューを探している可能性があります。