#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).