2016-04-06 30 views
0

Bu düzgün modele sahibim; bu ekran bir ekranda gösteriliyor ve başarılı bir doğrulamada bir veritabanına ekleniyor. Web uygulamasının kullanımını kolaylaştırmak için verileri yayınladıktan sonra belirli bir URL'ye yönlendirmeyi yapıyorum. Bunu yapmak için URL'yi gizli bir alan olarak iletiyorum (URL dinamik ve Get isteğine bağlı). Elbette, başarısız doğrulamada model döndürülür ve metin kutuları ve diğer düzenleyiciler yeniden doldurulur, ancak URL ile gizli alan yoktur. Doğrulama hatasından sonra, modelin bir parçası olmadan, nasıl yeniden oluşturulabilir?Onaylama hatasından sonra modelde gizli alan verileri nasıl saklanır [MVC]

İşte benim kod bazıları aşağıda verilmiştir:

-al yöntemi:

public ActionResult Create() 
    { 
     ViewBag.returnUrl = System.Web.HttpContext.Current.Request.UrlReferrer; .... 

-Post yöntemi: önceden

[HttpPost]   
[ValidateAntiForgeryToken] 
public ActionResult Create([Bind(Include = "Issue_ID,Issue,Case_Status, 
Issued_by,Issue_Date...,HelpDesk_Service_Request_Ticket_Number")] Case @case, string returnUrl) 
. 
. 
. 
if (ModelState.IsValid) 
     { 
      db.Cases.Add(@case); 
      db.SaveChanges(); 
      if (returnUrl == null) 
      { 
       return RedirectToAction("Index"); 
      } 
      else 
      { 
       return Redirect(returnUrl); 
      } 
     } 

     return View(@case); 

teşekkürler!

cevap

2

Sorunuzdan, dönüş URL değerini bir eylemden (GET) diğerine (POST) geçirmek istediğinizi anlıyorum. Sen TempData

TempData["returnUrl"] = new Uri("<return url>"); 

değeri saklamak ve daha sonra bir kez değer TempData okunur

var returnUrl= TempData["returnUrl"]; 

Not kullanarak erişmeyi deneyebilirsiniz, otomatik olarak koleksiyon kaldırılır. Değeri korumak için keep() veya peek() yöntemini kullanabilirsiniz. Lütfen benzer bir soruyu yanıtlayın: here

+0

Teşekkür kontrol edin, çok yararlı oluyor. TempData çok kullanışlı bir araç olduğu ortaya çıkıyor ve bu yol boyunca bana çok yardımcı olacak. – GeorgiG

1

Viewbag yalnızca geçerli istek için geçerlidir. Bunun yerine TempData kullanmanız gerekir.

Bu konuyu Viewbag passing value

+0

Çok teşekkürler. Nihayetinde haklıydınız, ama Bay Desai daha ayrıntılı olarak açıkladı. – GeorgiG

İlgili konular