2008-08-20 14 views
5

Bir denetleyici bir modele dayalı bir görünüm oluşturduğunda, indeksleyiciyi kullanarak ViewData koleksiyonundan özellikleri edinebilirsiniz (örn. ViewData ["Özellik"]). ,Asp.net MVC Kullanıcı Denetimi ViewData

<%= ViewData["DisplayMessage"] %> 

Bu doğru DisplayMessage hale düşünürdüm:

return View("Message", new { DisplayMessage = "This is a test" }); 

ve benim İleti kumanda üzerindeki bu vardı: Ancak, aşağıdaki kullanarak aramaya çalıştım paylaşılan kullanıcı kontrolü var ancak, boş döndürülüyor. etrafında müdahalesi ağır bir doz sonra nihayet kuvvetle benim kullanıcı kontrolü yazabilmek için bir "MessageData" sınıfı oluşturuldu:

public class MessageControl : ViewUserControl<MessageData> 

ve şimdi bu çağrı çalışır:

return View("Message", new MessageData() { DisplayMessage = "This is a test" }); 

ve benzeri gösterilebilir Bu: DisplayMessage özellik kullanıcı kontrolü güçlü yazmadan ViewData (. yani ViewData [ "DisplayMessage"]) toplama eklenecektir olmaz Neden

<%= ViewData.Model.DisplayMessage %> 

? Bu tasarımla mı? ViewData'nın "DisplayMessage" için bir anahtar içermesi mantıklı olmaz mıydı? Tabii

cevap

6

ViewData.Eval("DisplayMessage") 

sizin için çalışması gerektiğini yöntem yanıtlayan durdurmak gerekir.

2

Bu soruyu Anlaşılan bu çünkü sarıcı sınıfının olur ben hemen http://forums.asp.net/t/1197059.aspx

Google

üzerinde birkaç aramalardan sonra cevap bulmak oluşturduktan sonra. Öyle olsa bile, varsayılan olarak ViewData koleksiyonuna eklenen herhangi bir özellik eklenecektir.

Gerçekten benim kendi soru :(