Как я могу предотвратить загрузку новой страницы 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" в коде?

Другие вопросы по тегам