In ASP.NET MVC con Spark View motore in caso di errore modulo Submisison perché mi appare una risorsa 404 non trovato?

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

Domanda

La mia opinione:

/ Utente / 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>

azioni di controllo:

[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();
 }
}

il ritorno View () non sembra funzionare come reindirizza a

/ Utente / EditUserName

e mi dà un errore 404. WTF? Sto usando xVal per la convalida e tutto il che le opere finali semplicemente non può farlo per visualizzare nuovamente alla pagina precedente con le informazioni che l'utente messo in visualizzato nella casella. Qualcuno sa che cosa sto facendo male? Questo mi sta facendo pazzo!

Modifica

Non sono sicuro se questo è un bug in Spark o cosa diavolo sta succedendo. Non appena aggiungo una pagina EditUserName.aspx Non ricevo un errore 404 più e che sta funzionando correttamente, dal reshowing pagina non è un problema ??? Come diavolo sono altre persone non in esecuzione in questo problema? Ho letto tutto quello che sono riuscito a trovare e non vedo nulla di sbagliato in quello che sto facendo. Perché avrebbe funzionato con la normale motore di visualizzazione? Io così non voglio tornare a utilizzare l'altra solo per l'input dell'utente, ma mi sento come se avessi altra scelta qui.

Visualizza:

<%@ 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>
È stato utile?

Soluzione

stavo chiamando Html.RenderAction all'interno della mia pagina master. Sono stato "post" ing mia forma, ma il mio metodo di azione ha avuto un attributo [AcceptVerbs (HttpVerbs.Get)] su di esso - questo stava costringendo un errore 404 non trovato ed è stato, ovviamente, colpa mia. Super contento ho capito, ma avanza sul campo che cosa un dolore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top