2012-09-25 18 views

Respuesta

32

Por lo general, en su diseño, tendrá algo como esto:

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

La parte importante es @ViewBag.Title. Este fragmento de sintaxis de afeitar codifica y escribe el valor de ViewBag.Title. ViewBag es una propiedad en todas las vistas de maquinilla de afeitar a un tipo dinámico que utiliza el diccionario ViewData como su almacén de respaldo. ViewData es solo un diccionario donde puedes almacenar cosas aleatorias que quieras usar en tu vista.

En su controlador, diseño o vista, puede obtener o configurar ViewBag.Title. Aquí está un ejemplo de cómo configurarlo en una vista que utiliza el diseño (llamado _Layout.cshtml en este ejemplo):

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

Se puede acceder al modelo de metadatos de ViewData.ModelMetadata. En este ejemplo, enumero las propiedades del modelo y mostrar los nombres:

<ul> 
@foreach (var property in ViewData.ModelMetadata.Properties) 
{ 
    <li>@property.PropertyName</li> 
} 
</ul> 
+0

utilizo la misma manera de fijar etiquetas meta – Kate

4

En su método de control.

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

de ver, tienen esto. @ViewData["Title"])

si el título es html, debe ser @html.raw(ViewData["TopMessage"])

motor de la maquinilla de afeitar es mejor para MVC, por lo que recomiendo intenta afeitar cuando se crea un nuevo proyecto. espero que te ayude

1

Me gusta establecer títulos de página dinámicamente utilizando los nombres de acción y controlador. Se puede utilizar una biblioteca como Humanizer para convertir "SomeActionName" en "Algunos nombre de la acción":

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(); 
    } 
} 

y luego en su _Layout:

<title>@Html.GetPageTitle()</title> 
Cuestiones relacionadas