2011-02-09 14 views
6

Tôi đang làm việc với MVC 3 tại thời điểm tôi sử dụng ViewBag. Tôi muốn kiểm tra xem một trong các thuộc tính của ViewBag có được gán hay không. Tôi biết trong PHP bạn có thể làm isset (biến), nhưng có cái gì đó tương tự trong .NET 4?Định nghĩa tương đương của PHP trong C# .NET 4 cho các thuộc tính của các đối tượng 'động' là gì?

Kịch bản là tôi đang tạo bố cục lồng nhau có tiêu đề phần và phụ đề phần thông qua ViewBag. Chúng được phân cách bởi một người seperator và tiêu đề phụ là tùy chọn. Tôi không muốn hiển thị seperator nếu tiêu đề phụ không được đặt.

Đây là cách tôi tưởng tượng nó ở đâu isset sẽ được thay thế bằng .NET 4 equivelant.

@section header 
{ 
    <h2>@ViewBag.SectionTitle</h2> 
    @if(isset(ViewBag.SectionSubTitle)) 
    { 
     <div id="section-title-seperator"> - </div><h3>@ViewBag.SectionSubTitle</h3> 
    } 
} 

Bên cạnh câu trả lời trực tiếp cho câu hỏi của mình, tôi cũng mở cho các giải pháp thay thế (trong trường hợp tôi đang lạm dụng ViewBag).

Xin cảm ơn trước.

Trả lời

14

Bạn có thể kiểm tra xem nó là null như thế này:

@if(ViewBag.SectionSubTitle != null).

isset() trong PHP thực sự chỉ kiểm tra nếu có giá trị hiện tại. Từ hướng dẫn:

isset() sẽ trả về FALSE nếu kiểm tra một biến mà đã được thiết lập để NULL

Bạn cũng có thể sử dụng ViewDataDictionary.ContainsKey về sở hữu ViewData của bạn. Bởi vì ViewData["SectionSubTitle"] được equavilient để ViewBag.SectionSubTitle như vậy trong trường hợp này bạn có thể làm:

@if(ViewData.ContainsKey("SectionSubTitle"))

+0

Ahh, ok cảm ơn. BTW, chỉ để đảm bảo, tôi không lạm dụng ViewBag trong trường hợp này đúng không? –

+0

Tôi khuyên bạn nên cấu trúc lại sau này. Làm cho nó hoạt động trước. Đừng lạm dụng ViewBag, cân nhắc việc nhóm mọi thứ thành các mô hình riêng biệt. –

+0

+1 cho ViewData.ContainsKey –

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