ฉันได้ลองวิธีต่างๆ เพื่อให้สิ่งนี้ใช้งานได้ ฉันคิดว่าบางทีฉันอาจมีบางอย่างขาดหายไปในโมเดลหรือคอนโทรลเลอร์ของฉัน ดังนั้นฉันจึงโพสต์ทั้งสามส่วน
ฉันมีข้อมูลในฐานข้อมูลที่แสดงหัวข้อให้คำปรึกษาที่เลือกโดยที่ปรึกษาในการนัดหมายครั้งก่อน เมื่อที่ปรึกษาเรียกการนัดหมายนั้น แอปควรแสดงรายการหัวข้อที่เป็นไปได้ทั้งหมดโดยไฮไลต์หัวข้อที่เลือกไว้ก่อนหน้านี้ ทุกอย่างทำงานได้ยกเว้นบิตสุดท้าย
ฉันรู้ว่าฉันกำลังดึงข้อมูลที่ถูกต้องเนื่องจากสามารถแสดงรายการที่เลือกแยกกันได้ ฉันไม่สามารถทำให้พวกเขาถูกเลือกได้ นี่คือรหัส ฉันกำลังตัดส่วนที่ไม่เกี่ยวข้องออก
public class AppointmentModel
{ ...
public string AdvisingTopicId { get; set; }
public List<SelectListItem> AdvisingIdList { get; set; }
public SelectList AdvisingTopicNames { get; set; }
}
public class HomeController : AdvisorBaseController
{ ...
var topicCodes = appointment.advising_topic.ToList();
var advisingTopics = new SelectList((from t in topicCodes
select t.name).ToList(), "name");
var topicsList = (from t in db.advising_topic
select new SelectListItem
{
Selected = false,
Text = t.name,
Value = SqlFunctions.StringConvert((double)t.advising_topic_id).Trim()
}).ToList();
foreach (var topicCode in topicCodes)
{
var selTopic = topicsList.Find(x => x.Value == topicCode.advising_topic_id.ToString());
if (selTopic != null)
{
selTopic.Selected = true;
}
} ...
var appointmentModel = new AppointmentModel
{ ...
AdvisingTopicNames = advisingTopics,
AdvisingIdList = topicsList,
};
แล้วก็วิว
@model AcademicAdvising.Models.AppointmentModel
<h3>Advising Topics</h3>
<ul>
@foreach (var item in Model.AdvisingTopicNames)
{
<li>@Html.DisplayFor(x => item)</li>
}
</ul>
@Html.ListBoxFor(m=>m.AdvisingIdList, new SelectList(Model.AdvisingTopicNames, "Value", "Text", Model.AdvisingTopicNames.SelectedValue))
โปรดทราบว่า foreach แสดงรายการที่เลือกอย่างถูกต้อง นั่นเป็นเพียงการทดสอบและจะถูกดึงออก ListBoxFor เป็นที่ที่ฉันกำลังดิ้นรน สิ่งที่ฉันมีอยู่ที่นี่ใช้งานไม่ได้ (แสดงรายการทั้งหมดโดยไม่มีการไฮไลต์) และนั่นคือส่วนที่ฉันได้ลองใช้วิธีการต่างๆ แต่ล้มเหลวทั้งหมด