Передача данных из действия View в Controller - PullRequest
0 голосов
/ 02 марта 2012

У меня есть представление, которое получает некоторые биты данных с помощью методов Action, которые возвращают данные JSON.В зависимости от комбинации выбранных опций пользователь может заполнить некоторые поля на странице.Каков наилучший способ передачи данных обратно в контроллер для сохранения?

  • Поля, содержащие данные, зависят от выбранных параметров;
  • Я неу меня есть объект ViewModel со всеми полями, привязанными к представлению.

На данный момент у меня есть это:

@Ajax.BeginForm("MyAction", null, new AjaxOptions
            {
            }, new { @id = "SaveForm" } )
{
    .....
    @Html.RadioButton("SomeRadioButton", "bla", false, new { @id = "SomeRadioButton" })
    .....
    @Html.TextArea("SomeTextArea", new { @id = "SomeTextArea" })
    .....
    <a href="#" onclick="$('#SaveForm').submit();">Save</a>
}

Как получить все эти контрольные значения в действии?

Я могу добавить что-то вроде:

public void MyAction(FormCollection form)
{
    .........
}

Но мне не очень нравится эта опция.Какой самый чистый способ реализовать это?

Заранее спасибо

Ответы [ 2 ]

3 голосов
/ 02 марта 2012

Вы можете определить модель вида:

public class MyViewModel
{
    public string SomeRadioButton { get; set; }
    public string SomeTextArea { get; set; }

    ... 
}

и затем ваш контроллер примет эту модель представления в качестве аргумента и оставит механизм связывания модели по умолчанию выполнять свою работу:

[HttpPost]
public void MyAction(MyViewModel model)
{
    ...
}

Я бы также использовал эту модель представления в представлении, чтобы использовать строго типизированные версии помощников:

@Ajax.BeginForm("MyAction", null, new AjaxOptions { }, new { @id = "SaveForm" })
{
    @Html.RadioButtonFor(x => x.SomeRadioButton)
    ...
    @Html.TextAreaFor(x => x.SomeTextArea)
    ...
    <button type="submit">Save</button>
}
1 голос
/ 02 марта 2012

Вы можете (и в основном должны) использовать для этого специальный класс, который будет содержать все поля Подробнее о привязке модели - это способ сделать это с MVC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...