2013-08-08 6 views
0

В мой контроллер, у меня есть два метода так:не могу понять, какой маршрут между двумя таким же способом, один без параметров и один с

public ActionResult NouvelleDemande() 
    { 

     int NumDossier = StructureData.DonneNumDossier((string)Session["Utilisateur"], (string)Session["MotDePasse"]); 
     List<Contact> ListeContacts = StructureData.DonneListeContact(NumDossier); 
     if (ListeContacts != null) 
     { ViewBag.ListeContacts = ListeContacts; } 
     else 
     { ViewBag.ListeContacts = null; } 
     return View(); 
    } 

    public ActionResult NouvelleDemande(DemandeAssistance nouvelleDemande) 
    { 
     bool DemandeEnregistree = nouvelleDemande.EnregistrerDemande(); 
     if (DemandeEnregistree) 
     { 
      return Index(); 
     } 
     else 
     { 
      ViewBag.Error = "La demande n'a pas été enregistrée !"; 
      return View(); 
     } 
    } 

Так что, когда я хочу только, чтобы отобразить вид(), связанный с метод, я называю первый. В представлении() у меня есть форма, которая при отправке отправляет объект DemandeAssistance ко второму методу. В конфигурации маршрутов, я сделал это:

routes.MapRoute(
      name: "NouvelleDemande", 
      url: "{controller}/{action}", 
      defaults: new { controller = "Accueil", action = "NouvelleDemande" } 
     ); 

     routes.MapRoute(
      name: "AjouterNouvelleDemande", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Accueil", action = "NouvelleDemande", id = UrlParameter.Optional } 
     ); 

Но он показывает мне ошибку, когда я хочу просто, чтобы отобразить представление о том, что существует непонимание между этими двумя путями. Что я сделал не так ?

ответ

0

Мне удалось выяснить, чего не хватает, даже если я действительно не понимаю, почему. Я просто положить, что:

// POST : /Accueil/NouvelleDemande 
    [HttpPost] 

По методу, который содержит параметр, следующим образом:

// POST : /Accueil/NouvelleDemande 
    [HttpPost] 
    public ActionResult NouvelleDemande(DemandeAssistance nouvelleDemande) 
    { 
     bool DemandeEnregistree = nouvelleDemande.EnregistrerDemande(); 
     if (DemandeEnregistree) 
     { 
      return Index(); 
     } 
     else 
     { 
      ViewBag.Error = "La demande n'a pas été enregistrée !"; 
      return View(); 
     } 
    } 

Может быть, кто заинтересован будет времени, чтобы объяснить, почему это работает на самом деле.