Поля формы публикации с помощью Ajax.ActionLink

У меня есть представление в моем приложении MVC 3, которое позволяет пользователю вводить адрес доставки и размещать заказ. Поля формы, которые я показываю в представлении, точно такие же, как поля профиля пользователя. Поэтому я хочу рассмотреть ссылку для пользователя, чтобы сохранить данные, которые они ввели в свой профиль. Поля, такие как имя, фамилия, адрес и так далее. Я хочу использовать Ajax.ActionLink, но проблема в том, что я не знаю, как отправить поля формы в действие, которое сохраняет данные. Что у меня есть:

@Ajax.ActionLink("Save into profile", "SaveAccountProfile", new{ address=????}, new AjaxOptions { HttpMethod = "POST", InsertionMode = InsertionMode.Replace, OnSuccess = "alert('Account profile was successfully updated.')" })

Что бы я разместил в качестве данных маршрута?


person user1137993    schedule 29.01.2012    source источник


Ответы (1)


В этом случае вы должны использовать Ajax.BeginForm. Таким образом, значения полей формы будут автоматически отправлены на сервер.

@using (Ajax.BeginForm("SaveAccountProfile", new AjaxOptions { HttpMethod = "POST", InsertionMode = InsertionMode.Replace, OnSuccess = "alert('Account profile was successfully updated.')" }))
{
    ... some input fields
    <input type="submit" value="Save into profile" />   
}
person Darin Dimitrov    schedule 29.01.2012
comment
Проблема в том, что форма предназначена для размещения заказа пользователем. Так что уже есть кнопка, которая отправляет форму. Как я уже сказал, я рассмотрю ссылку или кнопку для публикации тех же полей (текстовых полей), чтобы сохранить их также как профиль учетной записи. - person user1137993; 29.01.2012
comment
@user1137993 user1137993, в этом случае я бы порекомендовал вам использовать стандартный Html.ActionLink, который вы бы ненавязчиво AJAXify с помощью jQuery. У вас будет больше контроля над параметрами, отправляемыми на сервер. Метод $.ajax позволяет передавать любые данные на сервер данных. - person Darin Dimitrov; 29.01.2012
comment
Спасибо Дарин. Кажется, это единственный способ. - person user1137993; 30.01.2012