2017-07-18 5 views
1

J'ai ce code:Validation du modèle avec des paramètres

//Edit page 
public ActionResult Edit(string id) 
{ 
    MyObj myobj = db.MyObj.First(s=>s.id == id); 
    return View(myobj); 
} 

//Save the edition 
[HttpPost] 
public ActionResult Edit(string id, MyObj myobj) 
{ 
    if(!ModelState.IsValid) return View(myobj); 
    //Continue saving... 
} 

Ainsi, si les données transmises sont mal la validation du modèle échoue et renvoie l'obj avec l'annotation de données, le problème est que j'ai perdu mon paramètre dans la url.

L'édition url est http://xxx/controller/Edit/1234 et la suivante est http://xxx/controller/Edit (sans le paramètre)

+0

essayer retour View() au lieu de vue retour (myobj) –

+0

Nop System.NullReferenceException modèle de lecture et l'url sans le paramètre – Santiago

+0

Cela ressemble à ce que c'est que les valeurs de route définies sur la html.beginform pour moi – Slicksim

Répondre

0
public ActionResult Edit(string id, MyObj myobj) 
{ 
    if(!ModelState.IsValid){ 
    ViewBag.Obj=myobj; 
    return RedirectToAction("Edit",new{id=id}); 
    } 
    //Continue saving... 
} 
+0

Mais ViewBag.Obj = myobj; n'est pas l'objet @Model, et je ne suis pas sûr si vous obtenez également les messages de validation des erreurs pour montrer son sur la vue – Santiago

+0

avez-vous essayé ???? – Rise