Dans ASP.NET MVC avec Spark View Engine en cas d'erreur sous forme de submisison pourquoi je reçois une ressource 404 non trouvée?

StackOverflow https://stackoverflow.com/questions/1768046

Question

Mon point de vue:

/ utilisateur / EditUserName / 2 / Me

<viewdata model="EditUserNameViewData" />
<form action="~/User/EditUserName" method="post" class="span-15 last">
!{Html.TextBox("newUserName")}
<Submit id='"chooseNewName"' value='"Choose new name"' />
</form>

Actions de contrôleur:

[AcceptVerbs(HttpVerbs.Get)]
public ActionResult EditUserName(int id)
{
 EditUserNameViewData vd = new EditUserNameViewData();
 vd.ExistingName = _userRepository.Get(id).UserName;
 return View("EditUserName", vd);
}

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult EditUserName(string newUserName)
{
 try
 {
  // fails
 }
 catch(RulesException errors)
 {
  errors.AddModelStateErrors(ModelState, string.Empty);
  return View();
 }
}

la vue de retour () ne semble pas fonctionner comme il redirige vers

/ utilisateur / EditUserName

et me donne une erreur 404. WTF? J'utilise xVal pour la validation et tout ce que les travaux de fin ne peuvent tout simplement pas l'obtenir pour réafficher la page précédente avec les informations de l'utilisateur mis en affiché dans la boîte. Tout le monde sait ce que je fais mal? Cela me conduit fou!

Modifier

Je ne suis pas sûr que ce soit un bug dans Spark ou ce que le diable se passe. Dès que j'ajouter une page EditUserName.aspx Je ne reçois pas une erreur plus 404 et il fonctionne correctement, par reshowing la page pas de problème ??? Comment diable d'autres personnes ne fonctionnent pas dans cette question? J'ai lu tout ce que je pouvais trouver et je ne vois rien de mal à ce que je fais. Pourquoi serait-il travailler avec le moteur régulier de vue? Je ne veux pas donc de revenir à l'utilisation de l'autre juste pour l'entrée d'utilisateur, mais je sens que je n'ai pas d'autre choix ici.

Voir:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>

<form action="/User/EditUserName/<%= ((EditUserNameViewData)ViewData.Model).User.Id %>/<%= ((EditUserNameViewData)ViewData.Model).User.UserName %>" method="post" class="span-15 last">
<input type="text" id="newUserName" name="newUserName" />
<input type="submit" id="chooseNewName" value="Choose new Name" />
</form>
Était-ce utile?

La solution

J'appelais Html.RenderAction dans mon page maître. J'étais « post » ing ma forme, mais ma méthode d'action a un attribut [AcceptVerbs (HttpVerbs.Get)] sur elle - ce contraignait une erreur 404 introuvable et il était évidemment ma faute. Super content d'avoir pensé à elle, mais GEEZ quelle douleur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top