Tôi muốn liên kết một trang mẫu cụ thể trong một số Chế độ xem nhất định ngoài những gì đã được liên kết trong _Layout.cshtml. Đối với non-Razor, tôi thấy sử dụng trình giữ chỗ nội dung. Làm thế nào tôi sẽ làm điều này cho Razor?Làm cách nào tôi có thể xem nội dung <head> cụ thể bằng cách sử dụng Asp.Net MVC 3 và Razor?
Trả lời
Tương đương với trình giữ chỗ nội dung trong Dao cạo là các phần.
Trong _Layout.cshtml của bạn:
<head>
@RenderSection("Styles", required: false)
</head>
Sau đó, trong trang nội dung của bạn:
@section Styles {
<link href="@Url.Content("~/Content/StandardSize.css")" />
}
Một giải pháp thay thế sẽ được đưa phong cách của bạn vào ViewBag/ViewData:
Trong _Layout.cshtml:
của bạn<head>
@foreach(string style in ViewBag.Styles ?? new string[0]) {
<link href="@Url.Content(style)" />
}
</head>
Và trong trang nội dung của bạn:
@{
ViewBag.Styles = new[] { "~/Content/StandardSize.css" };
}
này hoạt động vì trang điểm được thực hiện trước khi bố trí.
Đáng ngạc nhiên (với tôi), asp: ContentPlaceHolder hoạt động. Dường như rất hoang sơ. Tôi tự hỏi có cách nào khác không?
Cụ thể, bạn đặt <asp:ContentPlaceHolder ID="HeadContent" runat="server" />
trong _layout.cshtml của bạn và
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
<link href="@Url.Content("~/Content/StandardSize.css")" rel="stylesheet" type="text/css" />
</asp:Content>
theo quan điểm của bạn.
Dường như bạn chỉ hoạt động. Bạn đã xem HTML đã tạo chưa? – marcind
Bạn nói đúng. Tôi chỉ thấy rằng các phong cách tôi muốn được áp dụng nhưng tôi không kiểm tra HTML. Tôi đã tự hỏi làm thế nào một thẻ máy chủ đã được xử lý với Razor. – JohnOpincar
Đây cũng là một cách tuyệt vời để thêm các tham chiếu tập lệnh cụ thể vào đầu. – ReinierDG
Các giải pháp thay thế là tốt cho những người chưa chuyển đổi giải pháp của họ để sử dụng Razor. Cảm ơn! – Mayo