0

私の見解:

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

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

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

戻り View() はリダイレクトされるため、機能していないようです

/ユーザー/編集ユーザー名

404エラーが表示されます。なんてこと?検証に xVal を使用していますが、そのすべてが機能し、ユーザーが入力した情報がボックスに表示された前のページを再表示できません。私が間違っていることを知っている人はいますか?これは私を狂わせています!

編集

これが Spark のバグなのか、一体何が起こっているのかはわかりません。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>
4

1 に答える 1

0

マスター ページ内で Html.RenderAction を呼び出していました。フォームを「投稿」していましたが、アクション メソッドに [AcceptVerbs(HttpVerbs.Get)] 属性がありました。これにより、404 エラーが見つからず、明らかに私のせいでした。私はそれを理解してとてもうれしく思いますが、なんて面倒なことでしょう。

于 2009-11-21T03:26:14.107 に答える