Я пытаюсь заполнить государство ddl по выбору страны из списка. Я могу получить результат фильтра на основе критериев stateList
функции stateList
. Но когда он возвращается к просмотру, он отображает список состояний. Можете ли вы сказать мне, где все пошло не так.
Заранее спасибо.
//This is my controller class
public ActionResult Country()
{
Country country = new Country();
ListCountry objCountry = new ListCountry(country);
return View(country);
}
//This method calls on selection of countryanem
public ActionResult stateList()
{
Country country = new Country();
var state = Request.Form["_countryId"];
country.CountryId = _countryId;
ListCountry objCountry = new ListCountry(country);
return View(country);
}
}
//This is model class
public partial class Country
{
public SelectList countryList { get; set; }
public SelectList stateList { get; set; }
}
public partial class ListCountry
{
Entities db = new Entities();
//This constructorof Listcounty populate the country and state ddl
public ListCountry(Country country)
{
string cntId1 = country.countryId;
int id = Convert.ToInt32(cntId1);
country.countryList = new SelectList(db.Countries.ToList(), "CountryId", "CountryName");
if (id > 0 )
{
List <State> list = db.States.Where(p => p.countryId == id).ToList();
country.stateList = new SelectList(list, "StateID", "StateName");
}
else
{
country.stateList = new SelectList(db.States.ToList(), "StateID", "StateName");
}
}
Пара вещей:
Из вашего описания кажется, что вы вызываете stateList
при первой загрузке. Вы включаете страну в свой звонок? Если вы этого не сделаете, он всегда будет предоставлять вам все списки состояний, так как в вашем запросе ему нужна country.countryId
CountryId.
Я не рекомендую объявлять SelectList
в вашей модели. Предполагается, что MVC разделяет эти две проблемы. Что произойдет, если вдруг вы решите не использовать выбор? Это должно касаться только View
.