Привязать Asp.Net SelectList к параметру - PullRequest
0 голосов
/ 22 мая 2019

У меня есть объект Individual Action, который содержит атрибут Quarter и перечисление

public int QuarterId { get; set; }

        public QuarterList Quarter { get; set; }



        public enum QuarterList
        {
            [Display(Name = "Quarter One")]
            Q1 = 1,
            [Display(Name = "Quarter Two")]
            Q2 = 2,
            [Display(Name = "Quarter Three")]
            Q3 = 3,
            [Display(Name = "Quarter Four")]
            Q4 = 4,
        }

У меня есть маршрут CREATE для этого объекта в моем контроллере, который передает объект (PerformanceManagementRecord) и параметр int (квартал)

 // GET: Objectives/Create
        public IActionResult Create(PerformanceManagementRecord performanceManagementProcess, int quarter)
        {
            ViewBag.PerformanceManagementProcessId = performanceManagementProcess.Id;
            ViewBag.QuarterId = quarter;
            ViewBag.UserName = User.Identity.Name;
            PopulateStrategicActionDropDownList();
            return View();

        }

У меня тогда есть список выбора, который представляет список перечислений на четверти

  <div class="col-md-4">
            <form asp-action="Create">
                <div asp-validation-summary="ModelOnly" class="text-danger"></div>
                <div class="form-group">
                    <label asp-for="Quarter" class="control-label"></label>
                    <select asp-for="QuarterId" class="form-control"

                            asp-items="Html.GetEnumSelectList<IndividualAction.QuarterList>()" ></select>
                    <span asp-validation-for="Quarter" class="text-danger"></span>
                </div>

Как связать список выбора с параметром значения четверти - URLк этому методу создания содержит значение, которое я хочу установить (в данном случае 3)

https://localhost:5001/IndividualActions/Create/12?quarter=3

, но значение по умолчанию - первый квартал

1 Ответ

0 голосов
/ 22 мая 2019

Решение, описанное в этой ссылке , которая дает хороший обзор списков выбора в ASP.NET, заключается в использовании View Model, а не Viewbag

   public IActionResult Create(PerformanceManagementRecord performanceManagementProcess, int quarter)
    {


        var vm = new IndividualAction();
        vm.Quarter = new IndividualAction.QuarterList();
        vm.QuarterId = quarter;

        vm.PerformanceManagementProcessId = performanceManagementProcess.Id;
        vm.QuarterId = quarter;
        PopulateStrategicActionDropDownList();
        return View(vm);

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