我的觀點:在表單submisison錯誤的ASP.NET MVC與Spark View引擎錯誤爲什麼我得到404資源未找到?
/用戶/ 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();
}
}
返回查看()似乎並沒有工作,因爲它重定向到
/用戶/編輯用戶名稱
並給我一個404錯誤。 WTF?我正在使用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>