2011-05-04 15 views
7

Sadece ASP.Net MVC3'e bir göz atıyorum ve Oluşturma için otomatik olarak oluşturulmuş görünümlerden birinde, kullanıcı için bir metin kutusu sağlamak üzere "Html.EditorFor (model => model.User)" kullanır kullanıcı adlarını girin. İdeal olarak, bunu @ User.Identity.Name ile otomatik olarak doldururdum.Html.EditorFor'u ASP.Net MVC3'teki bir değerle nasıl otomatik olarak doldurmalıyım?

Bunu başarmanın doğru yolu nedir? Html.EditorFor, görünümünde otomatik olarak doldurmamı sağlıyor mu, yoksa bunu iletirken denetleyicide mi ayarlamalıyım?

buldum ben bundan denetleyicisi oluşturma yöntemini değiştirirseniz: Buna

public ActionResult Create() 
    { 
     return View(); 
    } 

:

public ActionResult Create() 
    { 
     MyObject myobject = new MyObject(); 
     myobject.User = User.Identity.Name; 
     return View(myobject); 
    } 

Bu iş gibi görünüyor. Bunu yapmanın doğru yolu bu mu?

Bu haklı olduğumu onaylamadan şimdiden teşekkür ederiz.

cevap

4

Kesinlikle, ödev iyi.

+0

İlgili statik sınıflar yok. –

+0

Evet - 'Kullanıcı '. –

+0

hayır öyle değil. Bu sadece bir alıcıya sahip bir 'IPrincipal' olan kontrolör üzerinde bir özellik. Bu alıcı, alay edilebilecek HttpContext.User özelliğini çağırır. Statik değil. –

2

Bu kesinlikle doğru yoldur. Kullanıcı dizesi özelliğini içeren bir görünüm modelini (MyObject) tanımlayın, ardından denetleyici eyleminizi anında oluşturun ve bu modeli doldurun ve son olarak görünüm modelini görüntüleme görünümüne geçirin. Denetleyicideki User.Identity özelliği, alay edilebilecek bir soyutlama olduğundan, birim sınaması da kolaydır.

+0

Mükemmel, teşekkürler. – Darren

1

bu durumda iyi bir yoldur, ancak büyük bir projeyi iki katına çıkarırsanız, tüm modellerinizi koyacağınız, denetleyicide değil, küresel bir model sınıfı oluşturmak daha iyidir.

+0

Teşekkürler. Hangi model global model sınıfına girer - User.Identity.Name? – Darren

İlgili konular