Я пытаюсь отредактировать список множественного выбора.
В моей модели представления у меня есть следующие поля: (среди прочих)
public List<string> BloodExamsSelected { get; set; }
public List<BloodExamsRef> BloodExams { get; set; }
public List<string> UrineExamsSelected { get; set; }
public List<UrineExamsRef> UrineExams { get; set; }
public List<SelectListItem> _dbBloodExams { get; set; }
public List<SelectListItem> _dbUrineExams { get; set; }
На контроллере я ' m передача значений из базы данных в _dbBloodExams и _dbUrineExams. Кроме того, BloodExams и UrineExams жестко запрограммированы и предопределены.
x.BloodExams = new List<BloodExamsRef>
{
new BloodExamsRef(){BloodTest="Blood01T",Unit="m/L",Low=1.2,High=4.9},
new BloodExamsRef(){BloodTest="Blood02T",Unit="m/L",Low=1.2,High=4.9},
new BloodExamsRef(){BloodTest="Blood03T",Unit="m/L",Low=1.2,High=4.9},
new BloodExamsRef(){BloodTest="Blood04T",Unit="m/L",Low=1.2,High=4.9},
new BloodExamsRef(){BloodTest="Blood05T",Unit="m/L",Low=1.2,High=4.9},
new BloodExamsRef(){BloodTest="Blood06T",Unit="m/L",Low=1.2,High=4.9},
new BloodExamsRef(){BloodTest="Blood07T",Unit="m/L",Low=1.2,High=4.9},
new BloodExamsRef(){BloodTest="Blood08T",Unit="m/L",Low=1.2,High=4.9},
new BloodExamsRef(){BloodTest="Blood09T",Unit="m/L",Low=1.2,High=4.9},
new BloodExamsRef(){BloodTest="Blood010T",Unit="m/L",Low=1.2,High=4.9}
};
x.UrineExams = new List<UrineExamsRef>
{
new UrineExamsRef(){UrineTest="Urine01T",ReferenceInterval="Od do",Unit="mol/dL"},
new UrineExamsRef(){UrineTest="Urine02T",ReferenceInterval="Od do",Unit="mol/dL"},
new UrineExamsRef(){UrineTest="Urine03T",ReferenceInterval="Od do",Unit="mol/dL"},
new UrineExamsRef(){UrineTest="Urine04T",ReferenceInterval="Od do",Unit="mol/dL"},
new UrineExamsRef(){UrineTest="Urine05T",ReferenceInterval="Od do",Unit="mol/dL"},
new UrineExamsRef(){UrineTest="Urine06T",ReferenceInterval="Od do",Unit="mol/dL"},
new UrineExamsRef(){UrineTest="Urine07T",ReferenceInterval="Od do",Unit="mol/dL"},
new UrineExamsRef(){UrineTest="Urine08T",ReferenceInterval="Od do",Unit="mol/dL"},
new UrineExamsRef(){UrineTest="Urine09T",ReferenceInterval="Od do",Unit="mol/dL"},
new UrineExamsRef(){UrineTest="Urine010T",ReferenceInterval="Od do",Unit="mol/dL"}
};
x._dbBloodExams = _db.BloodExaminations.Where(ui => ui.ReferralsId == x.Id).Select(z => new SelectListItem
{
Value = z.BloodTest,
Text = z.BloodTest,
Selected = true
}).ToList();
x._dbUrineExams = _db.UrineExaminations.Where(ui => ui.ReferralsId == x.Id).Select(z => new SelectListItem
{
Value=z.UrineTest,
Text = z.UrineTest,
Selected =true
}).ToList();
В режиме редактирования у меня проблема! Отображается весь предопределенный список, но не выбрано то, что уже есть в базе данных !!!
<div class="d-inline-block">
@Html.LabelFor(Model => Model.BloodExamsSelected, new { @class = "col-sm-12" })
@Html.ListBoxFor(Model => Model.BloodExamsSelected, new MultiSelectList(Model.BloodExams, "BloodTest", "BloodTest", Model._dbBloodExams), new { htmlAttributes = new {@name="MSL", @class = "form-control", @multiple = "multiple" } })<br />
@Html.ValidationMessageFor(Model => Model.BloodExamsSelected, "", new { @class = "text-danger" })
</div>
<div class="d-inline-block">
@Html.LabelFor(Model => Model.UrineExamsSelected, new { @class = "col-sm-12" })
@Html.ListBoxFor(Model => Model.UrineExamsSelected, new SelectList(Model.UrineExams, "UrineTest", "UrineTest", Model._dbUrineExams), new { htmlAttributes = new { @name = "MSL", @class = "form-control", @multiple="multiple" } })<br />
@Html.ValidationMessageFor(Model => Model.UrineExamsSelected, "", new { @class = "text-danger" })
</div>
Есть ли способ заставить это работать? Заранее спасибо!