フォームsubmisisonエラーのスパークビューエンジンを搭載したASP.NET MVCでは、なぜ私が見つからない404のリソースを取得していますか?

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

質問

私の見解ます:

/ユーザー/ EditUserName / 2 /私

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

コントローラのアクション:

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

にリダイレクトとして

リターンビューは()動作するようには思えません

/ユーザー/ EditUserName

と私に404エラーが発生します。なんてこった私はちょうどそれは、ユーザがボックス内に表示されたに入れた情報で前のページを再表示させることはできません動作する最後の検証およびすべてのためXVALを使用しています。誰もが私が間違ってやっているか知っていますか?これは非常識な私を運転している!

編集

これはスパークのバグや一体何が起こっているのであれば、私はわかりません。できるだけ早く私はEditUserName.aspxページを追加すると、私はもう404エラーを取得していないことだし、それはページがない問題を再表示することで、正常に動作しています?どのようにヘック他の人がこの問題に実行されていませんか?私は私が見つけることができるすべてのものを読んでいると私は私がやっていると何も間違って表示されません。なぜそれが通常のビューエンジンで動作しますか?私はこれだけのユーザー入力のための他のものを使用してに戻す必要はありませんが、私はここには他に選択肢がないような気がします。

表示:

<%@ 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>
役に立ちましたか?

解決

私は私のマスターページ内Html.RenderActionを呼んでいました。私は自分のフォームをINGの「ポスト」でしたが、私のアクションメソッドは、その上に[AcceptVerbs(HttpVerbs.Get)]属性を持っていた - これは404エラーが見つからない強制され、それは明らかに私のせいでした。スーパー嬉しい私はそれを考え出したが、もぉ何痛みます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top