Как я могу предотвратить загрузку новой страницы Ajax.BeginForm?
У меня есть форма Ajax с одним входом и кнопкой. При отправке форма должна отправлять только введенное значение в метод действия. Моя форма правильно публикуется в методе журнала контроллера пользователя, но после этого страница перенаправляется в /User/Log.
Как я могу избежать этого?
<% using (Ajax.BeginForm("Log", "User", null, new AjaxOptions {HttpMethod = "POST" }))
{%>
Please enter the username:
<%= Html.TextBox("Username", "")%>
<input type="submit" />
<% } %>
Вот метод действия:
public class UserController : Controller
{
[AcceptVerbs(HttpVerbs.Post)]
public void ForgotPassword(FormCollection collection)
{
string username = collection["Username"];
//TODO: some work
}
}
Спасибо, -Кейт
2 ответа
Решение
Для этого добавление нового { target = "_self" } в качестве объекта htmlAttributes у меня работало как в
<% using (Ajax.BeginForm("Log", "User", null, new AjaxOptions {HttpMethod = "POST" }, new { target = "_self" }))
{%>
Вы можете изменить код своего контроллера на:
public class UserController : Controller
{
[AcceptVerbs(HttpVerbs.Post)]
public void ForgotPassword(string Username)
{
//TODO: some work
}
}
Я скопировал твой код, и у меня все отлично работает. Не должно ли это быть Ajax.BeginForm("ForgotPassword", "User"
вместо Ajax.BeginForm("Log", "User"
в коде?