2012-02-15 20 views
7

varsayalım I UserDetails@model maddesi User olarak adlandırılan bir model sınıf ayarlanır adlı bir kısmi görünümü.Model için “null” ile kısmi bir görünümü nasıl çağırırım?

@model MyProject.Models.SpecialModel 
@{ ViewBag.Title = "..."; } 
<div class='user'>@Html.Partial("UserDetails", Model.SpecialUser)</div> 

Bu eserlerin: benim kısmi görünümü yukarıda belirtilen çağırmak istiyorum SpecialModel için bir görünüme İçinde

public sealed class SpecialModel 
{ 
    public User SpecialUser; 
    public ... // other stuff 
} 

:

Şimdi şuna benzer bir başka model sınıf var varsayalım Kullanıcı null değilse, yalnızca numaralı telefonu kullanabilirsiniz. kullanıcı null ise, ancak, bu durum almak:

System.InvalidOperationException: Sözlüğe geçirilen modeli madde 'MyProject.Models.SpecialModel' tiptedir, ancak bu sözlüğü 'türünde bir modeli madde gerektirir Projem .Models.User'.

Açıkçası, istisna mesajı yalan söylüyor. Normal olarak null'u geçebilmem için bunu nasıl düzeltebilirim? Bunun yerine

@Html.Partial("UserDetails", Model.SpecialUser) 

ait

cevap

18

bu özel senaryo çalışmasını sağlayan

@Html.Partial("UserDetails", new ViewDataDictionary(Model.SpecialUser)) 

daha ayrıntılı yazın. Bununla birlikte, bir dezavantajı vardır: denetleyiciden geçirilen tüm bilgileri temizler. Özellikle, tüm doğrulama bilgilerini temizler; Bazı veriler gönderiyorsanız ve bu kısmi görünümde bir doğrulama hatası mesajı görüntülemek istiyorsanız, bu tekniği kullanamazsınız.

+0

Aşağıdaki çözüm [burada] (http://stackoverflow.com/a/12037580/649497) olumsuz tarafı aşmaktadır! – Mojtaba

İlgili konular