21

私はMVCを初めて使用し、WebフォームアプリケーションをMVCに更新しています。共有レイアウト(Webフォームのマスターページ)があり、ビューごとにメタ情報とタイトル情報を設定したいのですが、このためのオプションが表示されません。助けてくれてありがとう。

4

4 に答える 4

53

通常、レイアウトには次のようなものがあります。

<!DOCTYPE html>
<html lang="en">
    <head>
        <title>@ViewBag.Title</title>
     <!-- the rest omitted for brevity -->

重要な部分は@ViewBag.Titleです。このかみそりの構文のビットは、の値をエンコードして書き込みますViewBag.Title。ディクショナリをバッキングストアとしてViewBag使用する動的タイプに対するすべてのレイザービューのプロパティ です。ビューで使用したいランダムなものを保存できる単なる辞書です。ViewDataViewData

コントローラ、レイアウト、またはビューで、を取得または設定できますViewBag.Title。レイアウトを使用するビュー(_Layout.cshtmlこの例では呼び出されます)に設定する方法の例を次に示します。

@{
   ViewBag.Title = "My View's Title";
   Layout = "~/Views/Shared/_Layout.cshtml";
}

からモデルメタデータにアクセスできますViewData.ModelMetadata。この例では、モデルのプロパティを列挙し、名前を表示します。

<ul>
@foreach (var property in ViewData.ModelMetadata.Properties)
{
  <li>@property.PropertyName</li>
}
</ul>
于 2012-09-25T15:31:45.980 に答える
6

あなたのコントローラーの方法で。

ViewData["Title"] = "this is page one title";

あなたの見解では、これを持っています。 @ViewData["Title"])

タイトルがhtmlの場合、@html.raw(ViewData["TopMessage"])

かみそりエンジンはmvcに適しているため、新しいプロジェクトを作成するときはかみそりを試すことをお勧めします。お役に立てば幸いです。

于 2012-09-25T21:10:20.807 に答える
4

アクション名とコントローラー名を使用して動的にページタイトルを設定するのが好きです。Humanizerのようなライブラリを使用して、「SomeActionName」を「Someactionname」に変換できます。

public static class HtmlHelperExtensions
{
    public static MvcHtmlString GetPageTitle(this HtmlHelper helper)
    {
        var actionName = helper.GetRouteDataValue("action");
        var controllerName = helper.GetRouteDataValue("controller");

        return new MvcHtmlString(controllerName.Humanize() + " - " + actionName.Humanize());
    }

    private static string GetRouteDataValue(this HtmlHelper helper, string value)
    {
        return helper.ViewContext.RouteData.Values[value].ToString();
    }
}

次に、_Layoutで:

<title>@Html.GetPageTitle()</title>
于 2015-05-17T23:26:32.507 に答える
0

Viewbag.Title これらの記事は関連性があるように見え、いくつかの指針を与えるように設定する必要があります。

于 2012-09-25T15:33:21.080 に答える