2010-11-08 4 views
1

Problème intéressant.Le bouton Soumettre n'est pas envoyé

Dans un changement de portée de projet, j'ai cassé une application en deux applications. J'ai créé un nouveau projet au lieu d'essayer de pirater l'application existante en deux et réutilisé une grande partie du code précédemment écrit. Je suis en bas du dernier bug qui me fait sortir les cheveux.

J'ai une liste d'éléments avec une case à cocher dans chaque ligne pour permettre à l'utilisateur de travailler avec plusieurs lignes à la fois. J'ai une certaine logique de validation jQuery pour m'assurer qu'une option est sélectionnée dans une liste déroulante et qu'au moins une ligne est sélectionnée. Cela fonctionne, mais rien ne semble se produire lorsque je clique sur le bouton Soumettre. J'ai même mis un point d'arrêt sur la première ligne de code dans la fonction et il n'est jamais déclenché. Le code est le même à l'exception de la modification de l'action de Display à Index. Des pensées?

Code suit:

<% using (Html.BeginForm("Index", "Timesheet", FormMethod.Post, new { Id = "form1" })) 
    { %> 
<%= Html.DropDownList("DropDownAction", new SelectList(Model.Actions, "Value", "Text"), "(Select)", new { Class = "required" })%> 
<input type="submit" value="Submit" /> 
.... 
<% } %> 

TimesheetController.cs

// 
    // GET: /Timesheet/ 
    [Authorize] 
    public ActionResult Index() 
    { 
     .... 
    } 

    // 
    // POST: /Timesheet/ 
    [HttpPost, Authorize] 
    public ActionResult Index(int[] CbSelect, string DropDownAction, SupervisorCredentials user) 
    { 
     foreach (int id in CbSelect) 
     { 
      ... 

     } 

     return RedirectToAction("Index"); 
    } 

HTML généré:

<form Id="form1" action="/Timesheet" method="post"><select Class="required" id="DropDownAction" name="DropDownAction"><option value="">(Select)</option> 
<option value=" ">Approve</option> 
<option value="P">Paper Signature</option> 
<option value="A">Absent Employee</option> 
</select> 
<input type="submit" value="Submit" /> 

Mise à jour: J'ai enlevé le jQuery et maintenant je reçois une exception nulle. Mes valeurs affichées sont DropDownAction=P&CbSelect%5B%5D=274680&CbSelect%5B%5D=275744. Pourquoi pas public ActionResult Index(int[] CbSelect, string DropDownAction)? Je reçois la bonne valeur dans DropDownAction et un null dans CbSelect.

Répondre

3

Je ne sais pas pourquoi, mais apparemment dans ma section de validation jQuery, j'avais debug: true. Il semble que cela empêche le formulaire d'être réellement soumis. Je n'ai aucune idée de comment cela est arrivé. Je ne l'ai pas ajouté. Le formulaire fonctionne maintenant.

+0

Pouvez-vous préciser comment vous avez réglé cela? – Shimmy

+0

C'était il y a plus de 2 ans ... Pas plus que j'ai là-haut. –

+0

Jetez un oeil à [this] (http://stackoverflow.com/questions/16193615/asp-net-mvc-form-doesnt-submit-to-the-right-action) question? – Shimmy

0

Il est probable que ce qui est en train d'être affiché dans le formulaire ne correspond pas à ce que MVC attend étant donné la signature de la méthode de votre Action. Si ce n'est même pas affiché (c'est-à-dire ne jamais toucher le serveur, peut être vérifié avec firebug ou similaire), à ​​quoi ressemble la sortie HTML de votre vue?

+0

Comment puis-je vérifier ce qui est envoyé? J'ai ajouté le HTML généré. Comme je l'ai dit, cela a fonctionné dans l'application précédente, j'ai copié cela. –

2

Il peut être très frustrant de déboguer ces types de situations. Procurez-vous un outil comme http://www.fiddler2.com/fiddler/version.asp allumez-le et il surveillera toutes les demandes de Web ainsi vous pouvez facilement voir ce qu'est la réponse et voir si votre forme soumet vraiment.

+0

D'accord, rien n'est soumis. Je vais commencer à supprimer des trucs jQuery jusqu'à ce que ça marche. –

0

Avez-vous changé votre routage par défaut?

De plus, le code HTML que vous avez publié n'a pas de balise de fermeture </form>. C'est ici?

+0

N'ont pas changé de routage, oui la fin est là. Je vais vérifier la suggestion d'Eric plus tard aujourd'hui. –

Questions connexes