2010-01-02 12 views
6

Denetleyicimde HttpPost için bir oluşturma eylemim var. Bu eylemin içinde, kaydı db'ye ekledim ve ardından farklı bir eylem adı belirten bir görünüm döndürüyorum, çünkü kullanıcıyı yeni oluşturduğum kaydın ayrıntıları gibi başka bir yere götürmek istiyorum. şimdiki model, girmiş oldukları verileri yeniden yüklemek zorunda kalmamalı. Ne yazık ki, adres çubuğundaki URL hala orijinal oluşturma eylemini gösterir.asp mvc: bir görünüm adı belirtmek URL'yi değiştirmez

[HttpPost] 
public ActionResult Create(MyModel model) 
{ 
    //Insert record 
    ... 
    //Go to details view, pass the current model 
    //instead of re-loading from database 
    return View("Details", model); 
} 

nasıl yerine "http://myapp/MyController/Create/1" nin, url "http://myapp/MyController/Details/1" göstermek için alabilirim? Mümkün mü, yoksa bir yönlendirme yapmak zorunda mıyım? Ben

cevap

4

Tarayıcıda URL'sini değiştirmek için bir yönlendirme yapmak zorunda ... Ben yönlendirme önleyebilirsiniz umuyorum.

yönteme geçen görünüm adı sadece işlemek için görüntülemek MVC söyler. Uygulamanızın uygulama detayıdır.

benzer görünümde olacaktır kod

: Burada bir yönlendirme yapmak istiyorum nedenlerinden

[HttpPost] 
public ActionResult Create(MyModel model) 
{ 
    //Insert record 
    ... 
    return RedirectToAction("Details", new { id = model.ID }); 
} 

One kullanıcı tarayıcıdaki Yenile düğmesine basın ve "o sinir bozucu alamayan öyle mi Verileri tekrar göndermeyi ister misiniz "iletişim kutusu.

Bu davranış

genellikle "Post-Yönlendirme-al" denilen veya kısaca "RPG" olduğunu. PRG: Post/Redirect/Get

İlgili konular