Как я могу взять данные из двух отдельных столбцов для отображения в выпадающем списке, используя .Net MVC 5

#c# #.net #asp.net-mvc

#c# #.net #asp.net-mvc

Вопрос:

Я новый студент-разработчик в ASP.Net MVC 5. Мне нужно взять одни данные из моего двух отдельных столбцов таблицы в SQL при вставке, но я беру только одно значение в свой выпадающий список. Как я могу это сделать? Согласно моим исследованиям, нет правильной информации или источника. Кто-нибудь мне помогает?

Модель:

 public class PersonelModel
    {  
        public int pid { get; set; }
        public string pAd { get; set; }
        public string pSoyad { get; set; }
        public string yonetici { get; set; } 
    }
  

Мой метод добавления:

 public ActionResult PersonelAdd()
{

    /*it does not work
     ViewBag.yonetici = new SelectList(db.Personel, "pAd", "pAd"  " "  "pSoyad");*/

    /*it work*/
    ViewBag.yonetici = new SelectList(db.Personel, "pAd", "pAd");

    return View();
}

[HttpPost]
public ActionResult PersonelAdd(Personel pModel)
{
    var personel = new Personel();
    personel.pAd = pModel.pAd;
    personel.pSoyad = pModel.pSoyad;
    personel.yonetici = pModel.yonetici;
    /*it works*/
    ViewBag.yonetici = new SelectList(db.Personel, "pAd", "pAd", pModel.yonetici
    );

    // it does not work 
    // ViewBag.yonetici = new SelectList(db.Personel, "pAd", "pAd" " " "pSoyad", pModel.yonetici);

    db.Personel.Add(personel);
    db.SaveChanges();
    return RedirectToAction("Index", "AdminUI");
}
  

Моя форма:

  <div class="form-group">
            @Html.LabelFor(model => model.yonetici, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.DropDownList("yonetici", null, htmlAttributes: new { @class = "form-control" })
                @Html.ValidationMessageFor(model => model.yonetici, "", new { @class = "text-danger" })
            </div>
        </div>
  

Ответ №1:

Конструктор SelectList принимает имена полей ( dataValueField и dataTextField ), которые должны существовать в вашем классе модели.

Вы можете добавить новое поле для описания того, что вы хотите отобразить в виде текста (обратите внимание на новое Description свойство):

 public class PersonelModel
{
    public int pid { get; set; }
    public string pAd { get; set; }
    public string pSoyad { get; set; }
    public string yonetici { get; set; }
    public string Description
    {
        get
        {
            return pAd   " "   pSoyad;
        }
    }
}
  

Теперь вы можете отображать pAd pSoyad в качестве текстового значения списка выбора:

 ViewBag.yonetici = new SelectList(db.Personel, "pAd", "Description")
  

Комментарии:

1. когда я попытался добавить значение описания строки, я столкнулся с ошибкой типа «В качестве инструкции могут быть использованы только присваивание, вызов, приращение, уменьшение и новое объектное выражение». в моем PersonelModel.cs. Итак, возникает ошибка.

2. он успешно отобразил «pAd pSoyad» в выпадающем списке. Но при вставке данных в базу данных выполняется только отправка pAd в таблицу SQL. Должна ли часть [HttpPost] быть для отправки pAd pSoyad?

3. Да, я думаю, вам следует изменить свое представление, чтобы заполнить всю PersonelModel перед отправкой его на контроллер. Выпадающий список устанавливает только одно свойство (valueproperty pAd).