Asp.Net MVC ReturnUrl

Genellikle Üyelik Girişi sonrası kullanılan bu sistem oldukça basit, ancak BeginForm’un hatalı kullanıldığı durumlarda çalışmama ihtimali bulunmakta.

Basit bir örnek ile durumu açıklamaya çalışalım.

View

@using (Html.BeginForm("Login", "Account", new { ReturnUrl = Request.QueryString["ReturnUrl"] }, FormMethod.Post))
{
     @ViewBag.Message
     <input type="text" autocomplete="off" placeholder="Kullanıcı Adı" name="UserName"/>
     <input type="text" autocomplete="off" placeholder="Şifre" name="Password"/>
     <button type="submit" >GİRİŞ</button>
}

Controller

[HttpPost]
public ActionResult Login(string UserName, string Password, string ReturnUrl)
{
    if (Membership.ValidateUser(UserName, Password))
    {
       FormsAuthentication.SetAuthCookie(UserName, false);

       if (!string.IsNullOrEmpty(ReturnUrl))
       return Redirect(ReturnUrl);
       else
       return RedirectToAction("Index", "Admin");
    } 
    ViewBag.Message = "Kullanıcı adı ve/veya şifre hatalı. Lütfen bilgileri kontrol edin.";
    return View();
}

Yukarıda senaryoda Query’den aldığımız değeri controller içerisinde kontrol ederek değerin boş olmaması durumunda belirtilen sayfaya yönlendirilmesini sağlamış olduk. Burada dikkat edilmesi gereken husus, yazının başında da belirtmiş olduğum gibi BeginForm kullanımının doğru yapılması olacaktır.

@using (Html.BeginForm("Login", "Account", FormMethod.Post, new { ReturnUrl = Request.QueryString["ReturnUrl"] }))

Yukarıdaki şekilde kullandığınız takdirde ReturnUrl değerinin her zaman null döndüğünü göreceksiniz.

@using (Html.BeginForm("Login", "Account", new { ReturnUrl = Request.QueryString["ReturnUrl"] }))

Aynı şekilde Method özelliğini kullanmadığınız durumda da ReturnUrl değeri dönecektir ancak “Enter” tuşu ile post etmeye eldeva diyebilirsiniz…

Grafikle başlayıp front-end'le devam ettiği yolculuğunun son durağında epey süredir back-end'e kafayı takmış bir yazılım meraklısı. İhtiyacı oldukça öğrenen, öğrendikçe paylaşan ve olanı olduğu gibi söyleyen gerçek bir realist.

İlginizi Çekebilir

Yazıya Git

CKEditor ve Ek Özellikleri... DEVAMI

Son zamanların en popüler Html editör programına birlikte göz atıyoruz.

Yazıya Git

Dijital Pazarlama Uygulamalarında Branding Neden Çok Önemli?... DEVAMI

Markalaşma bir ürünü tanımlayan ve diğer ürünlerden ayıran bir ad, sembol veya tasarımın pazarlamada kullanılmasıdır. Sağlam bir stateji ve marka değeri oluşturamaz ve değerleri uygun bir web sitesi ile desteklemezseniz şirketiniz geri kalabilir.

Yazıya Git

Dijital Reklam Platformları... DEVAMI

Dijital reklamlar için, Google, Facebook, Instagram, Twitter gibi sosyal medya platformları tercih ediliyor. Peki bu mecraların bize sağladığı avantajlar neler?

Yorum yazın