Core Mvc web uygulamalarında kullanıcıdan birden fazla yöntemle verileri alıp işleyebilirsiniz. Bu yöntemleri projedeki isteğinize göre seçip uygulayabilirsiniz. Ben bu yöntemlerin içinde birden fazla modele ait bilgilerin yani tuple yapısının post edilerek alınması işlemini anlatmaya çalışacağım.
Visual Studio 2022 programını açalım.
Yeni bir boş Core projesi oluşturalım. İsmini VeriAlmaYontemleriTuple olarak belirleyelim.
Temel ayarların yapıldığı program.cs dosyasını düzenleyelim.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddMvc();
var app = builder.Build();
app.UseDefaultFiles();
app.UseStaticFiles();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}"
);
app.Run();
Projeyi çalıştıralım. Controller bulunamadığı için hata verecektir. Öncelikle MVC projesi için gerekli olan klasörleri oluşturalım. Projemizi çalıştıralım. Controllers panelinde dosya olmadığı için hata verecektir.
Şimdi Controllers klasörü içine HomeController dosyasını oluşturalım. Aşağıdaki gibi bir action metodu oluşturulacaktır. Bu metod Index() isimli view dosyasını döndürecektir.
public IActionResult Index()
{
return View();
}
Break point atalım. Projeyi çalıştıralım. Index() isimli metod çalıştırılacak ancak bu dosya Views klasöründe olmadığı için hata verecektir. Şimdi Views klasörü altında Home klasörünü, bunun altında Index dosyasını oluşturalım.
<h3>Tuple ile Kullanıcıdan Veri Alma</h3>
Projeyi çalıştıralım. Proje hatasız bir şekilde çalıştırılır. Burada ürün ve kullanıcılara ait bilgileri view dosyasından gönderip controller tarafında alma işlemini gerçekleşitreceğiz. Product ve User isminde iki tane model oluşturalım. Product modeli aşağıdaki gibi olacaktır.
public class Product
{
public string? urunAdi { get; set; }
public int miktar { get; set; }
}
User modeli aşağıdaki gibi olacaktır.
public class User
{
public string? Adi { get; set; }
public string? Sifre { get; set; }
}
Tanımlanan bu sınıflar yardımıyla view tarafından gelen bilgileri karşılayabiliriz. Şimdi Index web sayfasını düzenleyelim.
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@model (VeriAlmaYontemleriTuple.Models.Product p,
VeriAlmaYontemleriTuple.Models.User u)
<form asp-action="Index" asp-controller="Home" method="post">
<input type="text" asp-for="p.urunAdi" placeholder="Ürün adı" /><br />
<input type="text" asp-for="u.Adi" placeholder="Adı" /><br />
<button>Gönder</button>
</form>
Buradan gelecek verileri karşılayan Index metotlarını düzenleyelim.
public IActionResult Index()
{
var tuple = (new Product(), new User());
return View(tuple);
}
[HttpPost]
public IActionResult Index([Bind(Prefix = "item1")] Product product,
[Bind(Prefix = "item2")] User user)
{
return View();
}
Projeyi kaydedip çalıştıralım. Bilgilerin geldiğini görürsünüz.