Передача данных из контроллера для просмотра с использованием viewdata - PullRequest
0 голосов
/ 27 августа 2018

У меня есть контроллер и представление, и я хотел бы заполнить раскрывающийся список.

Мой контроллер выглядит так:

namespace AAA.Controllers
{
    public class BBBController: Controller
    {
        [HttpPost]
        public ActionResult Sort_Order()
        {
            List<SelectListItem> liSort = new List<SelectListItem>();
            liSort.Add(new SelectListItem() { Text = "--Select--", Value = "0", Selected = true });
            liSort.Add(new SelectListItem() { Text = "ASC", Value = "1" });
            liSort.Add(new SelectListItem() { Text = "DESC", Value = "2" });

            ViewData["ddSort"] = liSort;
            return View();
        }
    }
}

Мой взгляд выглядит так:

@model IEnumerable<AAA.Models.xyz>

@{
    ViewBag.Title = "List";
}

<br />
<h2>List</h2>

<table class="table">
    <tr>
        <th>
            Sort order
        </th>
    </tr>
    <tr>
        <td>
            @using (Html.BeginForm("Sort_Order", "BBB", FormMethod.Post))
            {
               @Html.DropDownList("Sort", ViewData["ddSort"] as IEnumerable<SelectListItem>, new { @class = "form-control", @style = "width:200px; height:30px" })
            }
        </td>
            </tr>
</table>

Когда я запускаю это, я получаю сообщение об ошибке:

Нет элемента ViewData типа 'IEnumerable ', который имеет ключ 'Sort'. *

Может ли кто-нибудь помочь мне и сказать, что я делаю неправильно?

1 Ответ

0 голосов
/ 29 августа 2018

Вам нужно инициализировать ViewData["ddSort"] в методе GET. Тогда вы можете использовать его на ваш взгляд.

    [HttpGet]
    public ActionResult Sort_Order()
    {
        List<SelectListItem> liSort = new List<SelectListItem>();
        liSort.Add(new SelectListItem() { Text = "--Select--", Value = "0", Selected = true });
        liSort.Add(new SelectListItem() { Text = "ASC", Value = "1" });
        liSort.Add(new SelectListItem() { Text = "DESC", Value = "2" });

        ViewData["ddSort"] = liSort;
        return View();
    }
...