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

Google Fonts ve Lokal kullanımı... DEVAMI

Google Font servisine ve bu fontları dış kaynaktan yüklemeden, proje içerisine yerleştirerek nasıl kullanıyoruz, birlikte inceleyelim...

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 Reklamlara Başlamak İçin 5 Sebep... DEVAMI

Dijital reklamlar, tüm iş sektörlerinin bel kemiği olmaya başladı. Peki neden?