MVC'nin HTML Yardımcıları tarafından oluşturulan bir HTML öğesine sınıf niteliğini nasıl ekleyebilirim?


188

ASP.NET MVC, HTML Yardımcılarını kullanarak HTML öğeleri oluşturabilir @Html.ActionLink(), @Html.BeginForm()vb.

Ben anonim bir nesne oluşturarak form öznitelikleri belirtebilir ve bu nesneyi (bu durumda dördüncü) htmlAttributesparametre idiçin geçirerek nerede bir öğe için belirtebilirsiniz biliyorum :

Html.BeginForm("Foo", "Bar", FormMethod.Post, new { id = "MyForm"})

Peki ya classözellik? Açıkçası bu işe yaramıyor:

Html.BeginForm("Foo", "Bar", FormMethod.Post, new { class = "myclass"})

Benim görüşüm istendiğinde bu rastgele sözdizimi hataları atar, çünkü C # anahtar sözcüğü ile karşılaştıktan sonra başka bir şey bekler class.

Ayrıca denedim:

new { _class = "myclass"}

ve

new { class_ = "myclass"}

Ancak alt çizgiler tire işareti ile değiştirildiği için de çalışmadılar .

HTML öğelerini elle de yazabileceğimi veya formu a içine <div class="myClass">alabileceğimi biliyorum, ancak yine de nasıl yapılması gerektiğini bilmek isterim.

Yanıtlar:


348

C # 'da adı ayrılmış bir anahtar kelimeye sahip bir özelliğe sahip anonim bir tür (veya herhangi bir tür) oluşturmak için , özellik adını bir işareti ile başlatabilirsiniz @:

Html.BeginForm("Foo", "Bar", FormMethod.Post, new { @class = "myclass"})

VB.NET için bu sözdizimi. , bu dilde tüm anonim türler için varsayılan sözdizimi olan nokta kullanılarak gerçekleştirilir :

Html.BeginForm("Foo", "Bar", FormMethod.Post, new with { .class = "myclass" })

Ayrıştırıcı yeterince akıllı değildir, IMO, eğer kodun içinde olduğu bağlamda bu ipucuna ihtiyaç duyarsa.
toddmo

3

CSS geliştirmede şu anki en iyi uygulama, web sitesinde mümkün olduğunca geniş çapta uygulanabilen değiştiricilere sahip daha genel seçiciler oluşturmaktır. Tek tek sayfa öğeleri için ayrı stilleri tanımlamaktan kaçınırım.

<form/>Öğe üzerindeki CSS sınıfının amacı form içindeki öğelerin stilini denetlemekse, <fieldset/>ASP.NET MVC tarafından oluşturulan web sayfalarında varsayılan olarak herhangi bir formu kapsayan varolan öğenin class niteliğini ekleyebilirsiniz . Formdaki bir CSS sınıfı nadiren gereklidir.


4
Kesinlikle haklısın, ancak bu durum farklı. Birkaç jquery eklentisi için meta veri belirtmenin bir yolunu arıyordum. Bu genellikle class özniteliğini kötüye kullanarak yapılır.
Adrian Grigore

13
En iyi uygulamaları önerebilirsiniz, ancak bir formda css kullanan bir şablon varsa, "doğru" yapmak için şablon kasap gitmek olmaz. Gerçek şu ki, bir müşteri daha fazla ödeme yapmayacak çünkü css ile doğru şeyi yaptınız ...
Christian Payne

1
@ChristianPayne Gelecekte daha fazla ödemek zorunda kalabilirler, çünkü yapmadılar.
Ian Warburton

1
Bu cevabı aşağıya oyladım çünkü soruyu cevaplamıyor. Daha uygun bir cevap önce soruyu cevaplar ve sonra en iyi uygulama rehberliğini verir.
Ben
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.