3

これをどのように達成しますか?このビューは自動的に生成されます。たとえば、ビューを手動で追加する場合:Index.cshtmlファイルを含む連絡先ビュー。

このビューは、コントローラーの連絡先を作成することで変更できます。

    public class ContactController : Controller
{
    public ActionResult Index()
    {
        @ViewBag.Test = "this text will be used in my Contact View";

        return View();
    }
}

だから私の連絡先ビューでは、私はこのようにすることができます

<p> @Viewbag.Test </p>

そして、テキストが表示されます。しかし、共有ビューの_Layout.cshtmlファイルでこれをどのように実現しますか?SharedControllerを追加して同じことを試しましたが、このようには機能しません

4

2 に答える 2

2

_Layout.cshtml のコントローラーを使用することはできません。このファイルは、ビューのレイアウトに使用されます。たとえば、Views フォルダー内の _ViewStart.cshtml ファイルを見てください。

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

これは、基本的にすべてのコントローラーに、コントローラー アクションによって返されるビューのラッパーとしてそのレイアウトを使用するように指示します。

_Layout.cshtml ファイルには、値を設定する 1 つの方法に関するヒントが既に含まれています。

<head>
    ...
    <title>@ViewBag.Title</title>
    ...
</head>

ビューで次の操作を行うと、_Layout.cshtml ファイルの head/title セクションにレンダリングされます。

@{
    @ViewBag.Title = "Home";
}
于 2013-01-04T16:34:38.073 に答える
1

_Layout のコントローラーは必要ありません。連絡先ビューが _Layout に追加され、1 つの完全なビューが作成されます。したがって、_Layout 内の連絡先コントローラーから ViewBag プロパティを使用することもできます。_Layout は、連絡先ビューと同じ変数にアクセスできます。

具体的には、あなたの例では:

public class ContactController : Controller
{
    public ActionResult Index()
    {
        @ViewBag.Test = "this text will be used in my Contact View";

        return View();
    }
}

ViewBag.Test は、連絡先ビューと同じように _Layout でもアクセスできます。

于 2013-01-04T16:40:44.667 に答える