2010-10-02 2 views
3

Je devine est très simple, mais j'apprends MVC 2 en ce moment et je suis coincé. J'ai une vue fortement typée avec quelques champs et boutons qui devraient changer quelque chose dans la base de données en cliquant dessus. Il est donc le codeASP.NET MVC 2 - simple valeur d'incrément dans la base de données par soumettre

<% using (Html.BeginForm("UpVote", "Home",FormMethod.Post,new { linkId = link.LinkID })) 
    {%> 
     <input type="submit" value="UP" /> 
<% } %> 

Et mon contrôleur

[HttpPost] 
public void UpVote(int linkId) 
{ 
    var updateLink = geekDB.Link.Single(a => a.LinkID == linkId); 
    updateLink.UpVotes++; 
    geekDB.SaveChanges(); 

    RedirectToAction("Index"); 
} 

Et ça ne fonctionne pas. Quand j'appuie sur le bouton, la page est rechargée mais rien ne se passe. Je l'ai vérifié avec breakpoint dans la méthode UpVote mais ça ne s'arrête jamais là et je ne sais pas pourquoi.

+0

créer une autre question, envoyer votre code de contrôleur, vue et généré html – Omu

+0

Ok, c'est probablement une bonne idée :) – karol

Répondre

3

toutes vos actions doivent être ActionResult, tu as vide o_O

vous pouvez aussi mettre ViewResult, ContentResult RedirectRe .. mais ils sont tous ActionResult

+0

Cela a aidé. Je ne savais pas que j'ai toujours besoin de retourner quelque chose. Je voulais simplement incrémenter une chose. – karol

+0

bien, dans votre cas, vous retournez RedirectToAction ("Index") – Omu

+0

Wow, je ne peux pas croire que je n'ai pas remarqué cela. – Buildstarted

1

Je voudrais d'abord vérifier vos itinéraires.

également votre utilisation actuelle de BeginForm n'est pas bon car il produirait <form action="/Home/UpVote" linkid="yourlinkid" method="post"> quand je pense que vous voulez qu'il soit quelque chose comme <form action="/Home/UpVote?linkid=yourlinkid"...> - permutant les deux derniers paramètres produira cette sortie comme ceci:

<% using (Html.BeginForm("UpVote", "Home",new { linkId = link.LinkID }, FormMethod.Post)) {%> 
     <input type="submit" value="UP" /> 
<% } %> 

Le reste de vos affaires semble très bien sans en savoir plus sur votre projet.

+0

Oui, ça pourrait aussi être un problème, mais le problème principal était de ne pas retourner quelque chose. Mais merci :) – karol

Questions connexes