Bir nesneyi HTML özniteliklerine nasıl geçirebilirim? Örneğin Aşağıdaki kod var: öncedenBir nesneyi HTML özniteliklerine geçirme
id="myid" style="color: Red;"
Teşekkür :) Yapmanız
Bir nesneyi HTML özniteliklerine nasıl geçirebilirim? Örneğin Aşağıdaki kod var: öncedenBir nesneyi HTML özniteliklerine geçirme
id="myid" style="color: Red;"
Teşekkür :) Yapmanız
MVC HTML yardımcıları, kullandığınızda Ayrıca her DOM öğesinin kimliği otomatik ayarlanması gerekir muhtemelen yine kullanıyor olacak bir TagBuilder
ile:
var tagBuilder = new TagBuilder("input");
tagBuilder.MergeAttributes(htmlAttributes);
tagBuilder.ToString(TagRenderMode.Normal);
Bu ASP.NET MVC kaynak kodu kendisinde yapılabilir görebilirsiniz; Daha basit örneklerden biri TextAreaExtensions.cs.
DÜZENLEME: Düzgün, "data_attr" dan "veri attr" dönüştürmek AnonymousObjectToHtmlAttributes
statik yöntemini kullanmak için
.
IDictionary<string, object> htmlAttributes = HtmlHelper.AnonymousObjectToHtmlAttributes(attrs);
Sadece bunu data_bind özniteliği ile dener ve çıktı data_bind olarak beklenen, data-bind olarak - herhangi bir fikir? – SimonGates
Ne yazık ki, Url to TextAreaExtensions artık geçerli değil :) Sadece bilmeni istiyorum. – slawek
@slawek teşekkürler, bulabildiğim en yakın şeyle sabitlenmiş. – Domenic
: HTML işaretleme içine gömmek için böyle dizeye attrs dönüştürmek için nasıl
var attrs = new { id = "myid", style = "color: Red;" };
bir dizeye dönüştürmeye gerek yoktur. HTML Yardımcıları için son paramater bir Nesne. Bir tarafta exmample
@Html.TextBoxFor(x => x.Foo, new { size = 10, maxlength = 10 })
@Html.TextAreaFor(x => x.Notes, new { @class = "additionalInfo" })
@Html.TextBoxFor(x=>x.Registration.Address.Postcode, new {type="number", @class="postcode numeric", size=5, maxlength=5})
için
muhtemelen HTML ile stilleri directy inline ayarı gerektiğine dikkat ediniz ve bunun yerine bir CSS sınıf/seçiciyi kullanabilirsiniz: Sen yukarıda yazdım gibi sadece o nesneyi vermek ayrı bir stil sayfası ile.
IDictionary<string, object> htmlAttributes = new RouteValueDictionary(attrs);
Sonra birlikte bu sözlüğü kullanabilirsiniz: Eğer RouteValueDictionary
sınıfı tarafından sağlanan Bu işlevsellik yeterince şaşırtıcı olduğunu
Biliyorum, ama ek olarak, başka bir form bileşeni oluşturmak için kendi yöntemimi yazmak istiyorum, bu yüzden MVC 3 yaptım gibi bir yola ihtiyacım var :) –
np sorusu içinde – Daveo
Sorunuzda bahsetmiş olmalısınız Bunu hatırla :) –
İşte bu dönüşümü nasıl yapılacağı açıklanmıştır:
var htmlAttributes = new { id="myid", @class="myclass" };
string string_htmlAttributes = "";
foreach (PropertyDescriptor property in TypeDescriptor.GetProperties(htmlAttributes))
{
string_htmlAttributes += string.Format("{0}=\"{1}\" ", property.Name.Replace('_', '-'), property.GetValue(htmlAttributes));
}
PropertyDescriptor
System.ComponentModel
sorgula için teşekkür ederiz sınıfına ait! Günümü kurtardım! – Sergey