2012-09-25 34 views

Trả lời

32

Thông thường, trong cách bố trí của bạn, bạn sẽ có một cái gì đó như thế này:

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

Phần quan trọng là @ViewBag.Title. Bit cú pháp dao cạo này mã hóa và ghi giá trị của ViewBag.Title. ViewBag là thuộc tính trên tất cả các chế độ xem dao cạo đối với loại động sử dụng từ điển ViewData làm cửa hàng sao lưu của nó. ViewData chỉ là một từ điển mà bạn có thể lưu trữ các nội dung ngẫu nhiên mà bạn muốn sử dụng trong chế độ xem của mình.

Trong bộ điều khiển, bố cục hoặc chế độ xem, bạn có thể nhận hoặc đặt ViewBag.Title. Dưới đây là một ví dụ về cách thiết lập nó trong một cái nhìn mà sử dụng cách bố trí của bạn (gọi tắt là _Layout.cshtml trong ví dụ này):

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

Bạn có thể truy cập vào các siêu dữ liệu mô hình từ ViewData.ModelMetadata. Trong ví dụ này, tôi liệt kê các thuộc tính của mô hình và hiển thị tên:

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

tôi sử dụng cùng một cách để thiết lập các thẻ meta – Kate

4

Trong phương pháp điều khiển của bạn.

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

bạn xem, có điều này. @ViewData["Title"])

nếu tiêu đề là html, nó phải là @html.raw(ViewData["TopMessage"])

engine Razor là tốt hơn cho MVC, vì vậy tôi khuyên bạn nên thử dao cạo khi bạn tạo một dự án mới. hy vọng nó giúp bạn.

1

Tôi muốn đặt tiêu đề trang tự động bằng tên tác vụ và bộ điều khiển. Bạn có thể sử dụng một thư viện như Humanizer để chuyển đổi "SomeActionName" thành "Một số tên hành động":

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

và sau đó trong _Layout của bạn:

<title>@Html.GetPageTitle()</title> 
Các vấn đề liên quan