2011-04-01 9 views
6

Eğer mvc'de html denetimine atanacak bir ad okuma fırsatı var mı?html helper öğesinin adı nasıl okunur

Mesela ben bu kodu kullanın:

<div> 
    @Html.LabelFor(x => x.Name) 
    @Html.TextBoxFor(x => x.Name) 
    @Html.ValidationMessageFor(x => x.Name) 
    @Html.HiddenFor(x => x.Id) 

    <div> 
     I want to display here a TextBox name 
    </div> 

</div> 

Ve girdi adının bir isim almak istiyorum. Bu kod kısmi görünümün parçasıdır. elemanın ismi çocuklar gibi görünüyor [1] .Name

+0

Ne olmuş kullanılması olurdu? Ne yapmaya çalışıyorsun? – Hallaghan

cevap

13

@ Html.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName ("Ad") Yoksa Lambda Expressions

ile bu kullanmak jenerik HtmlHelper için uzatma yöntemini kullanabilirsiniz
public static string GetFullHtmlFieldName<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression) 
{ 
    return htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(ExpressionHelper.GetExpressionText(expression)); 
} 

kullanımı bu sadece MVC yeni sürümlerinde olduğu tahmin ediyorum (Html.GetFullHtmlFieldName(x => x.Name)

+0

Çok teşekkürler, bu harika çalışıyor! : D – nosbor

+0

Cevap olarak işaretlemeyi unutma – archil

+0

@archil Değişken için lambda ifadesini kullanamıyorum. Bunun için aşırı yüklenme yok. sadece dize tipi verilir. – tugberk

8

olurdu, ancak muhtemelen sadece kullanabilirsiniz:

@Html.NameFor(x => x.Name) 

Dokümantasyon: http://msdn.microsoft.com/en-us/library/hh833703(v=vs.108).aspx

+0

+1 Aweswome, Acaba anlayabildiğim kadarıyla çok sayıda insan yerleşik bir işlevsellik yaratan bir eklenti yaratacaktır :) Memnun ben bunu gördüm. –

+0

Kendi HtmlHelper uzantımı oluşturmam gerekiyordu ve NameExtensions.NameFor() ile bile sorun yaşadım. Ancak, sahip olduğum sorun, yardımcımı uygulamam ve Expression > gibi bir genel dönüş değeri kullanmak yerine Expression > türünde bir ifade kullandım. "Object" ile, otomatik olarak NameFor ile düzgün çalışmayan bir "Convert" ifadesi ekliyordu. (Tabii ki, lamdba ifadesinde bir oyuncu kadrosuna ihtiyacınız varsa Convert problemini halletmenin hala bir nedeni olduğuna eminim.) –