Seçili değeri göstermek için açılan listenin nasıl yapılacağı konusunda kafam karıştı.DropdownListFor seçilen değeri göstermiyor
Modeli:
public class SampleModel
{
public string State { get; set; }
}
Denetleyici:
public ActionResult EditInformation()
{
ViewBag.State = new SelectList(db.States, "StateName", "StateName");
string userEmail = User.Identity.GetUserName();
Sample model = new SampleModel();
model.State = "Melbourne";
return View(model);
}
Görünüm:
@Html.DropdownListFor(m => m.State, ViewBag.State as IEnumerable<SelectListItem>, "-- Select State --")
liste gayet durumlarını gösteren, ancak otomatik olarak değer I seçmez atandı ("Melbourne"). SelectValue atamak için selectlist oluşturucu kullanmayı denedim, ancak çok fazla araştırma yaptıktan sonra, birisi, modele atanan değeri kullanacağınız için Html.DropdownListFor()
kullanıyorsanız, selectlist constructor'ı kullanmak için gereksiz olduğunu yazdı.
DÜZENLEME:
public class State
{
[Key]
public int StateId { get; set; }
public string StateName { get; set; }
}
Yine değeri ve selectlistitem için metni olarak statename kullanmak istediğiniz netleştirmek için:
İşte benim db.State modelidir.
DÜZENLEME: Benim tam eylem yöntemi:
public ActionResult EditInformation()
{
//var states = ndb.States.Select(s => new SelectListItem { Text = s.StateName, Value = s.StateName , Selected = s.StateName == "Jawa Timur" }).ToList();
ViewBag.State = new SelectList(ndb.States, "StateName", "StateName");
ViewBag.City = new SelectList(ndb.Cities, "CityName", "CityName");
string[] countries = { "Indonesia" };
ViewBag.Country = new SelectList(countries);
string userEmail = User.Identity.GetUserName();
try
{
UserInformation userInfo = ndb.UserInformations.Single(m => m.Email == userEmail);
UserAccountViewModel model = new UserAccountViewModel();
model.Address = userInfo.Address;
model.Email = userEmail;
model.FirstName = userInfo.FirstName;
model.LastName = userInfo.LastName;
model.Phone = userInfo.Phone;
model.PostalCode = userInfo.PostalCode;
Debug.Print(userInfo.State);
model.State = userInfo.State;
model.City = userInfo.City;
model.Country = userInfo.Country;
return View(model);
}catch { }
return View();
}
Sizin "db.States" neye benziyor? – SeM
Neden bir "SampleModel" modeli yayınladınız ve ViewBag'inizi db.States 'den bir şeyle mi yüklediniz? Modelinizi 'States' için gönderin. 'Db.States '' ID' var mı? –
@BviLLe_Kid, aslında modele daha çok var, sadece basitleştiriyorum, böylece siz daha iyi okuyabilirsiniz, gerisi sadece basit bir özelliktir ve beklendiği gibi çalışıyorlar. benim db.Stat'larımın bir kimliği var, ama ismi değer olarak kullanmayı tercih ediyorum. –