0

我的观点:

/用户/编辑用户名/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();
 }
}

return 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 回答