2011-01-24 19 views
5

Tôi có một trang cái tên là Default.master. Tôi muốn đặt tiêu đề bằng cách sử dụng ViewBag.Title. Trên bộ điều khiển của tôi, tôi có:Có thể đặt tiêu đề trang bằng ViewBag ở chế độ ASPX không?

public ActionResult Index() 
{ 
    ViewBag.Title = "Home"; 
    return View(); 
} 

Home Quan điểm của tôi sử dụng Default.master như trang xem chủ. Trên trang xem chủ Tôi đang sử dụng:

<title><%= ViewBag.Title %></title> 

Nhưng tôi nhận được lỗi này:

The call is ambiguous between the following methods or properties: 'System.IO.TextWriter.Write(string, params object[])' and 'System.IO.TextWriter.Write(char[])' 

Làm thế nào tôi có thể sử dụng nó đúng cách?

Trả lời

7

Từ this blog post tôi thấy một cú pháp mà tôi chưa bao giờ thấy trước đây:

<%: %> 

này in một biểu thức, vì vậy sử dụng:

<%: ViewBag.Title %> 

tôi có giá trị chính xác.

+2

Trong khi đây là cú pháp chính xác, nó không liên quan gì đến vấn đề như đã nêu ... –

+2

@Oskar câu hỏi là cách sử dụng ViewBag ở chế độ aspx. Đây là cách, vậy làm sao nó không giải quyết được câu hỏi? – BrunoLM

+0

@BrunoLM Làm việc cho tôi, cảm ơn! – mawburn

7

Hãy thử:

<title><%= (string) ViewBag.Title %></title> 
+0

Không bị lỗi nhưng trả về sản phẩm nào. – BrunoLM

+0

Hmm, vui lòng dán toàn bộ nội dung của tệp aspx của bạn. Tôi vừa thử nghiệm với một mẫu aspx Xem trong một dự án MVC3 và mã hoạt động tốt. – santiagoIT

+0

Âm thanh như thuộc tính Tiêu đề của bạn là null, như Qun Wang cũng chỉ ra. Khi bạn truyền một giá trị null cho đối tượng động, nó không biết cách biểu diễn nó. Việc đưa nó vào String sẽ loại bỏ sự mơ hồ. –

1

giá trị ViewBag.Title của bạn không có giá trị. có thể có một số ngoại lệ đã xảy ra. chỉ trong trường hợp này ngoại lệ không rõ ràng sẽ được ném

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