No ASP.NET MVC com o Motor Spark View On Form Submisison Erro Por que estou recebendo um recurso 404 não encontrado?

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

Pergunta

Minha visão:

/Usuário/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>

Ações do controlador:

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

a vista de retorno () não parece funcionar, pois redireciona para

/Usuário/EditUserName

e me dá um erro 404. Wtf? Estou usando o XVAL para validação e tudo nesse final funciona simplesmente não pode fazer com que o Redisplay seja exibido na página anterior com as informações que o usuário colocou em exibição na caixa. Alguém sabe o que estou fazendo de errado? Isto está me deixando louco!

Editar

Não tenho certeza se isso é um bug no Spark ou o que diabos está acontecendo. Assim que adiciono uma página EditUserName.aspx, não estou mais recebendo um erro 404 e está funcionando corretamente, remodelando a página sem problemas ??? Como diabos as outras pessoas não estão encontrando esse problema? Eu li tudo o que pude encontrar e não vejo nada de errado com o que estou fazendo. Por que funcionaria com o mecanismo de visão regular? Eu não quero voltar a usar o outro apenas para entrada do usuário, mas sinto que não tenho outra escolha aqui.

Visão:

<%@ 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>
Foi útil?

Solução

Eu estava ligando para o html.renderaction dentro da minha página mestre. Eu estava "postando" meu formulário, mas meu método de ação tinha um atributo [AcepTérbes (httpverbs.get)] - isso estava forçando um erro 404 não encontrado e foi obviamente minha culpa. Super feliz por ter descoberto, mas nossa que é uma dor.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top