Каковы разные способы отправки данных формы в действие контроллера в ASP.net MVC 3? - PullRequest
5 голосов
/ 03 мая 2011

Я хочу опубликовать данные формы, которая имеет вид сетки, и столбец в каждой строке содержит выпадающий список.выбранное значение в раскрывающемся списке сопоставляется с идентификатором элемента этой строки.

Я хочу знать, каковы различные способы передачи этих данных в действие контроллера в этом случае?

Передача в качестве отдельных параметровэта опция уже игнорируется, так как моя форма будет содержать динамические данные и может иметь n записейЯ прав в этом мышлении?

Мысль о FormCollection, это правильный выбор?

1 Ответ

5 голосов
/ 03 мая 2011

Как всегда, я бы начал с определения модели вида:

public class MyViewModel
{
    public string SelectedValue { get; set; }
    public IEnumerable<SelectListItem> Values { get; set; }
}

тогда есть действие контроллера GET, которое заполнит коллекцию этой модели представления, и в соответствующем представлении я бы использовал шаблоны редактора:

@model IEnumerable<MyViewModel>
@using (Html.BeginForm())
{
    <table>
        <thead>
            <tr>
                <th>Some column name</th>
            </tr>
       </thead>
        <tbody>
            @Html.EditorForModel()
        </tbody>
    </table>

    <input type="submit value="OK" />
}

и в соответствующем шаблоне редактора (~/Views/Shared/EditorTemplates/MyViewModel.cshtml):

@model MyViewModel
<tr>
    <td>
        @Html.DropDownListFor(
            x => x.SelectedValue,
            new SelectList(Model.Values, "Value", "Text")
        )
    </td>
</tr>

и, наконец, будут опубликованы выбранные значения:

[HttpPost]
public ActionResult Index(IEnumerable<MyViewModel> model)
{
    ...    
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...