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

Türkçe ASP.NET MVC Kaynaklarında Yapılan Hatalar... DEVAMI

Kaş yapalım derken göz çıkartmamak adına bir yazı...

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?

Yazıya Git

CKFinder 3.4.2 Kurulumu... DEVAMI

CKSource tarafından geliştirilen CKFinder Web Dosya Yöneticisi'nin, ASP.NET MVC projesine CKEditor entegrasyonu'nu birlikte inceleyelim

Yorum yazın