Form Tag Helper, uygulamanın yönlendirme yapılandırmasına dayalı olarak bir URL oluşturur ve bunu formun action niteliğine uygular. Ayrıca, request doğrulaması için sahteciliğe karşı bir belirtecin değerini içeren form içinde gizli bir alan oluşturur. Form öğesinde bir metot özelliği belirtilmemişse, form etiketi yardımcısı varsayılan olarak post değeriyle bir tane oluşturur.
Kısacası bu tag helper, bir Form içindeki Form ve HTML öğeleriyle çalışmamıza yardımcı olur.
Attribute | Açıklama |
action | Bir MVC controller’daki action metodun adı. |
all-route-data | Multiple route parametre değeri. |
antiforgery | Sahteciliğe karşı bir token işlenip işlenmediğini belirtir. |
area | MVC alanının adı. |
controller | MVC controller’ın adı |
fragment | URL’deki parça |
host | domain |
page | Bağlantı kurulacak Razor sayfası |
page-handler | Çağırmak için Razor sayfa handler metot |
protocol | Protokol (http, https, ftp vb.) |
route | route’ın adı |
route- | Tek bir route parametresi değeri |
Controller ve Action
Form Tag Helper’ı kullanmanın en kolay ve belki de en yaygın yolu controller ve action attribut’dır. Bu, Formun hangi controller’a gönderilmesini istediğinizi hangi action metodu belirtmenize olanak tanır.
<form asp-controller="Blog" asp-action="UpdateEntry" method="post" ></form>
Route
Yukarıda gördüğünüz gibi, istediğiniz Controller ve action methodu basmak kolaydır – Controller’ın adını ve Action method’un adını belirtmeniz yeterlidir. Ancak, alternatif olarak, belirli bir rout’u hedeflemeye karar verebilirsiniz. Bu durumda route, istenen action methoda ulaşmaktan sorumlu olacaktır. Bunu asp-route niteliğini kullanarak yapabilirsiniz.
<form method="post" asp-route="UpdateBlogEntry"></form>
asp-route özelliğinde belirtilen değer, hedeflemek istediğiniz route için belirtilen adla eşleşmelidir, örneğin bunun gibi:
[Route("Blog/Update", Name = "UpdateBlogEntry")]
public IActionResult Update()
{
.....
Route Parametreleri Ekleme
Hedefine gitmesinin istediğin route, FORM’unuzdan geçmeniz gerekebilecek bir veya birkaç parametre alabilir. Bu, aşağıdaki gibi bir sözdizimi kullanılarak yapılabilir.
<form method="post" asp-route="UpdateBlogEntry" asp-route-id="42"></form>
Elbette çoğu durumda, değer muhtemelen dinamik olacaktır ve örn. Modeliniz, şöyle:
form method="post" asp-route="UpdateBlogEntry" asp-routeid="@Model.Id"></form>
Fragment
Fragment (Parça), bir belgenin adlandırılmış bir bölümünü tanımlamak için kullanılan bir URL’de diyez işaretinden (#) sonraki değerdir.
<form asp-fragment="notes">...</form>
Page
Bağlantı kurulacak Razor sayfasının adı, dosya uzantısı olmadan sağlanmalıdır:
<form asp-page="page">...</form>