سلام
یک سوال مفهومی داشتم
من به صورت دستی یک دراپ دان لیست که از دیتابیس اطلاعات رو می خونه ایجاد کردم
این مدل هست
public class testGroup
{
[Key]
public int ID { get; set; }
public string Title { get; set; }
public int ParentID { get; set; }
}
این اکشن
public ActionResult Create()
{
IEnumerable<testGroup> mylist = db.Database.SqlQuery<testGroup>(@"select * from testGroups");
ViewBag.ParentID = new SelectList(mylist, "ID", "Title");
return View();
}
// POST: Administrator/testGroups/Create
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "ID,Title,ParentID")] testGroup testGroup)
{
if (ModelState.IsValid)
{
db.testGroups.Add(testGroup);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(testGroup);
}
و این هم ویو
<select class="form-control" id="ParentID" name="ParentID">
@foreach (var item in ViewBag.ParentID)
{
<option value="@item.Value">@item.Text</option>
}
</select>
همونطور که می بینید یک System.Web.Mvc.SelectList به یک ViewBag به اسم ParentID پاس داده میشه
حالا می خوام بدونم mvc چطور متوجه می شه که کدوم آیتم از دراپ دان انتخاب شده، چون وقتی درج انجام میشه دقیقا و به درستی مقدار آیتم انتخاب شده رو به عنوان ParentID در دیتابیس ثبت می کنه.
قبلا که توسط هلپر html.dropdownlist این اتفاق صورت می گرفتم فکر می کردم در خود هلپر کدهایی نوشته شده که این قضیه رو مدیریت کنه، ولی الان که از این هلپر استفاده نکردم و توسط یک Foreach دراپ دان رو خودم ایجاد کردم می بینم باز همون اتفاق مدیریت شده، بنابراین احتمالا این مدیریت داره توسط System.Web.Mvc.SelectList انجام میشه ولی به چه صورت؟
ممنون می شم توضیح بدید!