2010-08-17 29 views
7

Ok, tôi chắc chắn đó là một sai lầm ngớ ngẩn đối với tôi, nhưng tôi không thể tìm ra vấn đề ở đâu quả hạch.Sự cố nghiêm trọng với ContentPlaceHolder trong thẻ Tiêu đề HTML của trang chủ (MVC2)

Tôi có một trang chủ, với điều này:

<head runat="server"> 
    <title> 
     <asp:ContentPlaceHolder ID="TitleContent" runat="server" /> - Company 
    </title> 
</head> 

Nó chỉ là HTML mặc định chèn bởi VS khi tôi tạo masterpage, Tôi chỉ cần thêm "- Công ty" ở cuối, vì vậy mà tôi don' t phải lặp lại văn bản đó trong mỗi lần xem.

Trên quan điểm, tôi có, ví dụ như này:

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> 
    Some title for the view 
</asp:Content> 

Như bạn có thể tưởng tượng, kết quả cuối cùng không phải là những gì tôi mong đợi. Thay vì

<title>Some title for the View - Company</title> 

tôi nhận được:

<title>Some title for the View</title> 

Tại sao?

+1

"và nó thúc đẩy hạt của tôi." âm thanh đau đớn, hy vọng bạn làm cho nó hoạt động. –

+0

Lol! Tất cả các từ để nhập sai ... Đã sửa lỗi; D – salgiza

Trả lời

5

Dường như là một câu hỏi về cách ASP.Net cổ điển (hay còn gọi là WebForms) hoạt động. Phil Haacked on Title Tags and Master Pages là một nội dung tuyệt vời.

Mặc dù anh ấy đi sâu vào những lý do nó hoạt động theo cách của nó, có vẻ như anh ấy không đề cập đến MVC cụ thể. Các nhận xét đầu tiên bởi Erik Porter có giải pháp dễ dàng điên:

Thay đổi

<head runat="server"> 

để

<head> 

Tada, cố định.

+0

Woah! Tôi thậm chí đã sao chép nó, nhưng tôi chưa bao giờ chú ý đến thực tế là có một runat = "server" trong thẻ head. Cảm ơn rất nhiều! :) – salgiza

0

Bạn đã đóng thẻ tiêu đề hai lần. Ngoài ra, hãy thử không có ContentPlaceHolder được tự đóng.

Trong MVC, tôi không nhớ bao giờ sử dụng ContentPlaceHolder. Tôi mạnh mẽ gõ trang chủ của tôi và điền trang chủ theo cách đó.

+0

Sửa thẻ tiêu đề (Tôi đã mắc lỗi khi định dạng mã cho SO, nó thực sự ok trong mã gốc). Tôi đã thử sử dụng thay vì tự đóng, nhưng tôi nhận được kết quả tương tự. – salgiza

3

Hãy thử điều này bên trong thẻ tiêu đề của bạn:

<asp:ContentPlaceHolder ID="TitleContent" runat="server" /><%= " - Company" %> 

Tôi chạy vào trong này một khi trở lại và đặt theo nghĩa đen bên trong một khối mã xóa nó lên. Tôi không thực sự chắc chắn tại sao, mặc dù, nếu ai đó có một lời giải thích.

+0

Hehehe, có vẻ như hệ thống mới của SO để hiển thị các câu hỏi chưa được trả lời đang hoạt động (hai câu trả lời cùng ngày sau một vài tháng không có bình luận! :). Tôi đã chấp nhận câu trả lời của Erik, vì liên kết của anh giải thích lý do tại sao mã của bạn hoạt động, và tôi muốn loại bỏ runat = server cho đầu, vì nó cơ bản không làm gì cả (ngoài việc khiến tôi đặt câu hỏi trong SO ^^) – salgiza

Các vấn đề liên quan