2012-11-07 31 views
6

Bence şu bit adres HTML.TextBoxFor: Ben person.PersonnelId kontrol ederkenBen engelli geçmediğine değeri

if (ModelState.IsValid) 
{ 
    PersonnelFacade.SavePerson(person); 
    return RedirectToAction("Index"); 
} 

Şimdi öyle: Bu benim denetleyicisi olarak

@Html.TextBoxFor(model => model.PersonnelId, new { disabled = "disabled" }) 

var boş. {disabled = "disabled"} öğesini kaldırdığımda iyi çalışıyor, ancak sonra yapmak istediğim kişi olan Personeli değiştiremiyorum.

Neyi yanlış yapıyorum?

+0

Şunları kullanabilirsiniz 'HiddenFor' +' DisplayFor' yerine, ya da sadece zaten ne kadar 'HiddenFor' ekleyin. Her neyse, tarayıcı düzeyinde bu tür korumalara güvenmek mantıklı değil. Herkes, istediği şekilde "PersonnelID" ile değiştirilmiş sahte bir POST sorgusu gönderebilir. – GSerg

+0

Bunların hiçbiri devre dışı bırakılmış metin kutusuyla aynı işlevselliği sunuyor mu? – Liam

+0

Örneğimde, bunu PersonnelId ile kullanıyorum. Ancak aynı şeyi CreationDate için kullanmak istiyorum, bu sayede kullanıcılar ne zaman oluşturulduğunu veya son değişiklik yapıldığında görüntülenmek üzere ModificationDate'i görebilir. DisplayFor değeri iletmez. HiddenFor, gerçekten görmek istemediğiniz için PersonnelId için kullanabilirim. Ancak CreationDate veya ModificationDate için kullanamıyorum çünkü bunlar görüntülenmelidir. –

cevap

5

Bunun yerine salt okunur yapmayı deneyin.

@Html.TextBoxFor(model => model.PersonnelId, new { readonly= "readonly" }) 
+1

"readonly" işlevi, metin kutusunun hala etkin olması dışında tamam çalışıyor. "Devre dışı" eklediğimde, değeri tekrar kaybeder. –

9

2 değerleri

  1. PersonnelIdForDisplay
  2. görünümünüze

    1. @ Html.TextBoxFor üzerinde Sonra

  3. PersonnelId (model => model.PersonnelIdForDisplay, yeni deneyin {disabled = "devre dışı"})
  4. @ Html.HiddenFor (p => p.PersonnelId)
+0

Teşekkürler .. bana yardımcı oldu .. –

İlgili konular