В ASP.NET MVC с механизмом просмотра Spark при отправке формы ошибка, почему я получаю ресурс 404, который не найден?
-
21-09-2019 - |
Вопрос
Мой взгляд:
/Пользователь/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();
}
}
return View(), похоже, не работает, поскольку он перенаправляет на
/Имя пользователя/EditUserName
и выдает мне ошибку 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>
Решение
Я вызывал Html.RenderAction на своей главной странице.Я "публиковал" свою форму, но в моем методе action был указан атрибут [AcceptVerbs(HttpVerbs.Get)] - это приводило к ошибке 404 not found, и это, очевидно, была моя ошибка.Очень рад, что я разобрался в этом, но, боже, какая боль.