2010-06-17 15 views
21

Mülkiyet (ASP.Net MVC) için:Müşteri No ben asp.net mvc bir BEGGINER benim ve bir şüphem yok

benim Görünüm ve I'de bir TextBox için bir etiket yapmaya çalışıyorum 'bilmek istediğini, ben mesela ... komut generete için istemci hale edilecektir bir kimliği alabilir nasıl:

<label for="<%=x.Name.ClientId%>"> Name: </label> 
<%=Html.TextBoxFor(x=>x.Name) %> 

doğru Kimliği olacağından emin olmak için 'clientid' koymak gerek neler karşılık gelen kontrole

Teşekkür

Alkış

cevap

38

yerde bu kod koyun: ASPX görünümünde Sonra

using System; 
using System.Linq.Expressions; 
using System.Web.Mvc; 

namespace MvcLibrary.Extensions 
{ 
    public static class HtmlExtensions 
    { 
     public static MvcHtmlString FieldIdFor<TModel, TValue>(this HtmlHelper<TModel> html, 
      Expression<Func<TModel, TValue>> expression) 
     { 
      string htmlFieldName = ExpressionHelper.GetExpressionText(expression); 
      string inputFieldId = html.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldId(htmlFieldName); 
      return MvcHtmlString.Create(inputFieldId); 
     } 
    } 
} 

:

<label for="<%= Html.FieldIdFor(m => m.EmailAddress) %>">E-mail address:</label> 
<%= Html.TextBoxFor(m => m.EmailAddress) %> 

Ayrıca JavaScript kullanabilirsiniz olarak aramalar bunun için bir uzantısı yöntemi de vardır kontrolün kimliğini önceden bilmezsiniz ve ona karşı çalışmak için bazı JavaScript kodları gerekebilir:

<script> $.CoolJQueryFunction('<%= Html.FieldIdFor(m => m.EmailAddress) %>'); </script> 

Burada belirtilen bir kişinin LabelFor HTML yardımcı yöntemi, kullanmak istediğiniz gerçek metin etiketini belirlemenize izin vermez, IMHO ile etiket metnini ayarlamak için ViewModels'inizi nitelikler ile dekore etmeniz gerekir. Bazı ASPX görünüm bölümünün kendisinde, bazı etki alanı/görünüm modellerinde görünmüyor. Yine de bazı insanlar benimle aynı fikirde olmayacaklar.

kişinin blog yayınlarına ilişkin bağlantıların yazabilmek için kurallar Emin değilim, ama bu kesin konuyla ilgili bir blog yayınlanmıştır: http://www.dominicpettifer.co.uk/Blog/37/strongly-typed--label--elements-in-asp-net-mvc-2

+0

(ingilizcem çok iyi değildir) Biliyorum, ama bazı insanlar doğru anlayamıyorum! Tek ihtiyacım olan bu şey ... Çok teşekkürler dostum! attributies ile alan modeli sınıfları Dekorasyon benim için iyi bir pratice değil, sana katılıyorum! –

+6

Bu çerçevenin bir parçası olmalıdır. – pbz

+0

* oldukça * kullanıcı kontrolleri içinde çalışmıyorum (yani .ascx) –

-2

Kullanım aşağıdadır:

Model.Name 

Sadece bir "görünümü kaynak" veya Html.xyzFor() yöntemlerdir ne olduğunu görmek için Firebug gibi bir şey ile render metin kutusu incelemek yapabilirsiniz üretme. Normalde, her ikisi de özellik adına ayarlanmış "id" ve "ad" özelliklerine sahip bir metin kutusu oluştururlar.

+0

herhangi bir örnek istiyorsanız

, .. ı ... Mülkiyet (veya Müşteri Id Adını ihtiyaç bir ... ben excatly bilmiyorum) –

+0

@FelipeOriani @womp 'Html.LabelFor kullanırken (x => x.Id)' yerine, yerine "DisplayName" kimliği tanımladım "Id" Metin gösteriyor DB'den gelen kimlik değeri. Herhangi bir yorum? – Steve

0

Söylendiği gibi, ASP.NET MVC'deki ClientID, UniqueID vb. Için endişelenmenize gerek yoktur, çünkü bunlar web formları soyutlamalarıdır. Sadece istediğiniz kimliği yazabilirsiniz.

<%= Html.LabelFor(x => x.Name) %> 
+1

LabelFor, güçlü bir şekilde yazılan

27

MVC 4 Bu şimdi inşa etti .. this

+1

Bu güzel dostum! Teşekkürler ;) –

5

Onun eğlenceli gördüklerinizi MVC'nin ücretsiz kaynak kodunda bulunabilir. İşte cevabı: Html.IdFor @

veya @ Html.NameFor

Yani fark nedir? İşte yakalamak:

NameFor herhangi bir "." "_" için.varsa o malın içeriğini yazacak, ve ben buna ihtiyacı yoktur I have found this cool small article