Query String (GET Data) – ASP.NET – MVC

Bir web uygulamasında kullanıcıdan girdi almanın en yaygın yollarından biri query string’tir. PHP ve ASP Classic gibi daha eski teknolojilerde, doğrudan query string ile ilgilenirdiniz, ancak daha önce belirtildiği gibi, ASP.NET MVC, Controller mettolarınız için parametrelere çoğu query string işlemeyi soyutlamıştır. Ancak, bazı durumlarda, doğrudan query string’ten okumak yine de alakalı olacaktır ve neyse ki bizim için ASP.NET MVC’de yapmak hala çok kolay.

Query String Nedir?

URL’ler protokol, ana hostname, path vb. gibi birkaç bölümden oluşur. Query string, URL’nin bir soru işareti karakterinden sonra gelen kısmıdır.

https://www.google.com/search?q=test&oq=hello

Soru işareti (?) karakteri sonrası herşey query string olarak kabul edilir. Bu durumda iki parametre vardır: Biri q,
diğeri oq olarak adlandırılır. “Test” ve “hello” değerlerine sahiptirler. Bunlar, URL tarafından görüntülenen sayfayla alakalı olacaktır. Örneğin, q parametresi muhtemelen sunucuya kullanıcının az önce ne aradığını söylemek için kullanılır. Query string genellikle kullanıcının bir bağlantıya tıklamasının veya bir FORM göndermesinin sonucu olarak eklenir. Bu, sunucunuzdaki aynı dosyanın birden çok durumu işlemesine olanak tanır – query string yoluyla girdiye bağlı olarak döndürülen çıktıyı değiştirebilir.

Query String’e Erişme

ASP.NET MVC’de query string’e erişim çok basittir. HttpContext sınıfı kullanılarak gerçekleştirilir. Query string ile ilgili bilgiler, aşağıdaki özelliklerden biri kullanılarak bulunur: HttpContext.Request.QueryString ve HttpContext.Request.Query. Aradaki fark, QueryString’in temelde ham metin dizesi olması, Query özelliğinin ise anahtarlara ve değerlerine kolayca erişmenizi sağlamasıdır. Sonraki örneklerde Query özelliğini kullanacağız, burada çalışmanın ne kadar kolay olduğunu göstereceğim:

public class HomeController : Controller
{
    public IActionResult QueryTest()
    {
        string name = "John Doe";
        if (!String.IsNullOrEmpty(HttpContext.Request.Query["name"]))
            name = HttpContext.Request.Query["name"];
        return Content("Name from query string: " + name); 
    }
}

Kullanıcının adını yansıtmak için sayfa artık bunun gibi bir URL ile çağrılabilir:

/Home/QueryTest?name=Jenna Doe

Gördüğünüz gibi, sadece “name” adında bir Query string parametresinin varlığını kontrol ediyorum ve
varsa, onu değişkene okuyorum.