Input Tag Helper, kendisine atanan PageModel özelliğine göre uygun name ve id değerleri üretir. Ayrıca, özelliğin meta verilerine dayalı olarak type özelliği için uygun bir değer üretecektir. Ayrıca istemci tarafı doğrulaması için destek sağlayan öznitelikleri de yayar.
Input Tag Helper’ın iki özelliği vardır:
Attribute | Açıklama |
for | Geçerli PageModel’e göre değerlendirilecek bir ifade, genellikle bir PageModel özellik adıdır. |
format | Kullanılan bir format string, value özniteliğinin biçimini ayarlar |
asp-for Özelliği
Bazı Tag Helper’lar çeşitli amaçlar için kullanılabilen çeşitli niteliklere sahipken, Input Tag Helper yalnızca bir tanesine sahiptir: asp-for özelliği. Öte yandan, bu nitelik son derece güçlüdür! Input kontrolünü Model üzerindeki belirli bir özelliğe bağlamanıza olanak tanır. Örnek olarak, Title (string) adında bir özelliğe sahip Movie adında bir Modeliniz olduğunu düşünün. Bunun için asp-for özelliğini kullanarak çok kolay bir şekilde bir Input alanı oluşturabilirsiniz.
<input asp-for="Title" />
ASP.NET MVC bunu otomatik olarak aşağıdaki gibi uygun bir INPUT etiketine dönüştürür.
<input type="text" id="Title" name="Title" value="The Godfather">
Belirttiğimiz tek Tag Helper özelliği (asp-for) nasıl otomatik olarak 4 HTML özelliğine (type, id, name ve value) dönüştürüldüğüne dikkat edin. Bu, FORM oluştururken size gerçekten zaman kazandırabilir.
Veri Tiplerini Kullanma
name ve id özelliklerinin değeri, doğrudan Title özelliğinin adından gelirken, value’da doğal olarak Title özelliğinin değerinden gelir. Peki ya type özelliği? Aslında, .NET framework’ü yalnızca özelliğin veri tipine bakar ve ardından bu HTML özelliği için uygun ve desteklenen bir tip oluşturur. Bu durumda, Title özelliği bir string olarak tanımlandığından, type özelliği için metin değeri kullanılır.
Data Annotation Kullanma
Ancak, bir string birçok şey olabilir – bir e-posta adresi, bir telefon numarası (tire ve/veya boşluklu) veya bir parola olabilir. Bu örneklerin tümü bir string olarak tanımlanabilir, ancak biraz daha dikkat gerektirir. Neyse ki bizim için ASP.NET MVC, yalnızca string için değil, Data Annotation (Veri Açıklamaları) olan bir üyenin amacını belirlememize olanak tanır.
public class WebUser
{
[Phone]
public string PhoneNumber { get; set; }
[EmailAddress]
public string MailAddress { get; set; }
[DataType(DataType.Password)]
public string Password { get; set; }
[DataType(DataType.Date)]
public DateTime Birthday { get; set; }
public bool IsActive { get; set; }
}
Data Annotation (Veri Açıklamaları) ile üyelerin amacını nasıl belirttiğime dikkat edin. Burada kullanılan iki tip vardır: amacın doğrudan açıklamada belirtildiği [Phone] tipi ve amacı belirtmek için DataType numaralandırmasını kullandığımız [DataType] ek açıklaması. Sonuç aynı ama. String için nasıl kullandığıma da dikkat edin, aynı zamanda Birthday özelliği için de. Varsayılan olarak, DateTime türü hem tarih hem de saat alan bir giriş alanı olarak işlenir, ancak Birthday genellikle yalnızca bir tarih olarak belirtilir. DataType.Date değerini kullanarak bu gereksinimi belirtebiliriz.
Artık bu özelliklerin kullanıldığı bir View oluşturabiliriz ve Tag Helper kullanılarak bu özellikler ekstra çaba harcamadan istenen girdi türleriyle oluşturulacaktır.
@model TagHelper.Models.WebUser
<div>
<label asp-for="MailAddress"></label>
<input asp-for="MailAddress" />
</div>
<div>
<label asp-for="PhoneNumber"></label>
<input asp-for="PhoneNumber" />
</div>
<div>
<label asp-for="Password"></label>
<input asp-for="Password" />
</div>
<div>
<label asp-for="Birthday"></label>
<input asp-for="Birthday" />
</div>
<div>
<label asp-for="IsActive"></label>
<input asp-for="IsActive" />
</div>
Sonuç: