2015-03-16 16 views
10

Có cách nào để xóa ViewBag không?Xóa ViewBag?

ViewBag không có setter, vì vậy nó có thể không chỉ đơn giản được nulled ra:

ViewBag = null; 

Tôi cũng dường như không thể use reflection để lặp qua nó và quét sạch các thuộc tính năng động của nó, như bạn có thể không tạo một thể hiện của một dynamic.

Lưu ý: Tôi biết ViewBag ngày của riêng nó hơi có mùi mã vì nó không được nhập mạnh và về cơ bản là tập hợp khổng lồ các biến toàn cầu. Và chúng tôi đang di chuyển ra khỏi nó, nhưng vẫn cần phải đối phó với nó trong khi chờ đợi.

Trả lời

12

Bạn chỉ có thể gọi

ViewData.Clear(); 

Như ViewBag sử dụng nó trong nội bộ.

Đây là ví dụ làm việc - https://dotnetfiddle.net/GmxctI. Nếu bạn dòng nhận xét bỏ ghi chú, sau đó hiển thị văn bản sẽ bị xóa

Đây là current implementation cho ViewBag trong MVC:

public dynamic ViewBag 
{ 
    get 
    { 
     if (_dynamicViewDataDictionary == null) 
     { 
      _dynamicViewDataDictionary = new DynamicViewDataDictionary(() => ViewData); 
     } 
     return _dynamicViewDataDictionary; 
    } 
} 

Và một phần của DynamicViewDataDictionary

// Implementing this function improves the debugging experience as it provides the debugger with the list of all 
// the properties currently defined on the object 
public override IEnumerable<string> GetDynamicMemberNames() 
{ 
    return ViewData.Keys; 
} 

public override bool TryGetMember(GetMemberBinder binder, out object result) 
{ 
    result = ViewData[binder.Name]; 
    // since ViewDataDictionary always returns a result even if the key does not exist, always return true 
    return true; 
} 

public override bool TrySetMember(SetMemberBinder binder, object value) 
{ 
    ViewData[binder.Name] = value; 
    // you can always set a key in the dictionary so return true 
    return true; 
} 

Như bạn có thể nhìn thấy nó phụ thuộc vào ViewData đối tượng

+0

Điều đó đã làm điều đó, cảm ơn! Bạn sẽ nhận được số tiền kiếm được hợp pháp của bạn ✓ ngay khi SO cho phép tôi. –

+0

Tôi rất vui vì nó đã giúp :) –

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