2011-11-01 3 views
6

senin tüm model için kullanmak yolu (veya simular şey)Tam model için @ Html.HiddenFor'u kullanmanın bir yolu var mı?

@Html.HiddenFor 

var mı. Bunun yerine böyle bir şey yapmanın

: Böyle

@Html.HiddenFor(model => Model.Person.Name) 
    @Html.HiddenFor(model => Model.Person.LastName) 
    @Html.HiddenFor(model => Model.Address.Street) 

kullanım şey (bu örnek çalışmaz)

@Html.HiddenFor(model => Model) 

Zaten stackoverflow ve google bunun için aradım. .. ama bu konuda bir şey bulamadınız.

Bazı modellerde db'ye kaydedilmeyen bazı değerler için beklemem gerekiyor, bu nedenle yalnızca Html.HiddenFor kullanılarak kimlik benim için bir seçenek değil.

Şimdiden teşekkürler!

+0

Bunu yapmak istemiyorum! Gelen varlığın Birincil Anahtarına sahip olmanız, ardından sunucu tarafına bakmanız gerekir ... aksi halde müşteri adreslerini değiştirebilir. Bunları DB'ye kaydetmezseniz ancak bunlara kalıcı olmaları gerekiyorsa, oturum veya çerezleri kullanın. ya da localstorage ya da onun yerine – Milney

cevap

7

gizli bir giriş olmasını istediğiniz özellikleri seçin ve aşağıdaki gibi Modelinizdeki HiddenInputAttribute ekleyin:

public class MyModel 
{ 
    [HiddenInput] 
    public int MyProperty { get; set; } 
} 
+0

@Darin & @ Haythem teşekkürler, bu haftanın sonundaki cevapları da test edeceğim! – Gyocol

3

MVCContrib's Html.Serialize method'a bakabilirsiniz. Bu, emülasyonu yorumlamaktır (ve içten aslında ViewState'i kullanır :-)).

Alternatif bir yaklaşım, benzersiz bir kimliği gizli alan olarak kaydetmek ve denetleyici eyleminin içinde, ilgili modeli temel veri deposunuzdan almak için bu kimliği kullanır.