Timothy Heckler Ответов: 1

Как изменить сохраненный идентификатор выпадающего списка на выбранное имя элемента?


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

Информация О Контроллере:

public class TicketsController : Controller
   {

       // GET: Tickets

       Helpdesk2017Db _db = new Helpdesk2017Db();

       private void PopulateLists(Tickets model)
       {
           ViewData["Categories"] = new SelectList(_db.Categories, "Id", "CategoryName", model.Categories);


           ViewData["Priorities"] = new SelectList(_db.Priorities, "Id", "PriorityName", model.Priorities);


           ViewData["Site_Admins"] = new SelectList(_db.Site_Admins, "Id", "Name", model.Site_Admins);
       }

       // GET: Tickets
       public ActionResult Tickets()
       {
           var model = from a in _db.Tickets orderby a.Date ascending select a;

           return View(model);
       }

       // GET: Tickets/Details/5
       public ActionResult Details(int id)
       {
           var view = _db.Tickets.Single(v => v.Id == id);
           return View(view);
       }

       // GET: Tickets/Create
       public ActionResult Create()
       {

           var model = new Tickets();
           PopulateLists(model);


           return View("Create");
       }

       // POST: Tickets/Create
       [HttpPost]
       public ActionResult Create(Tickets model)
       {
           if (ModelState.IsValid)
           {
               PopulateLists(model);
               _db.Tickets.Add(model);
               _db.SaveChanges();
               // TODO: Add insert logic here
               return RedirectToAction("Tickets");
           }

           return View("Tickets");
       }


Информация О Модели:

public class Tickets
   {
       public string Priorities { get; set; }
       public string Categories { get; set; }
       public string Site_Admins { get; set; }
       public int Id { get; set; }
       public DateTime Date { get; set; }
       public string Name { get; set; }
       public string Email { get; set; }
       public long Telephone { get; set; }
       public string Location { get; set; }
       public string Region { get; set; }
       public string ComputerName { get; set; }
       public long AssetTag { get; set; }
       public string Subject { get; set; }
       public string Body { get; set; }


Создать Представление Информации:

<div class="col-md-offset-2 col-md-10">
               @Html.DropDownListFor(m => m.Site_Admins, (SelectList)ViewData["Site_Admins"],"Assign To", new { @class = "form-control", })
               @Html.DropDownListFor(m => m.Priorities, (SelectList)ViewData["Priorities"], "Select Priority", new { @class = "form-control",  })
               @Html.DropDownListFor(m => m.Categories, (SelectList)ViewData["Categories"], "Select Category", new { @class = "form-control",  })
               <h2></h2>
               <hr />
           </div>
           <hr />
       </div>


Информация о просмотре списка (извлечена из фактической таблицы базы данных, отображаемой на странице списка)


Приоритеты 4

Категории 4

Site_Admins 1


другая информация опущена из списка из-за чувствительности.

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

Что я уже пробовал:

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

Timothy Heckler

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

1 Ответов

Рейтинг:
12

Timothy Heckler

Ну что ж, думаю, я догадался... В моем коде данных представления контроллера я опустил "Id "и просто вставил" CategoryName"," PriorityName "и" Name " дважды, а затем модель.Категории и т. д... Вау, это было так просто, назовите его один раз, потому что это то, что будет сохранено в базе данных, и назовите его во второй раз, чтобы показать в выпадающем списке... вау... ничто никогда не бывает так просто... так ли это?

private void PopulateLists(Tickets model)
       {
           ViewData["Categories"] = new SelectList(_db.Categories, "CategoryName", "CategoryName", model.Categories);


           ViewData["Priorities"] = new SelectList(_db.Priorities, "PriorityName", "PriorityName", model.Priorities);


           ViewData["Site_Admins"] = new SelectList(_db.Site_Admins, "Name", "Name", model.Site_Admins);
       }


заметили разницу? Это работает... так что я соглашусь.