2016-11-16 3 views
-1

У меня есть это имя таблицы Item, и когда я редактирую одну строку таблицы, она возвращает нулевые значения для раскрывающегося списка State и City. Но в базе данных уже добавлена, но DropDownList показывать пустой я не знаю, как получить выбранное значение и здесь все мои коды, которые я был использованMVC извлекает выбранное значение из базы данных в каскадный onload при нажатии кнопки редактирования

здесь Таблица Пункт

[Table("Item")] 
public class Item 
{ 
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public int id { get; set; } 
    [Required] 
    public string name { get; set; } 
    public string info { get; set; } 
    public decimal price { get; set; } 

    public int CatId { get; set; } 

    public int? CountryId { get; set; } 

    public int? StateId { get; set; } 

    public int? CityId { get; set; } 

    [ForeignKey("CatId")] 
    public virtual Category Category { get; set; } 

    [ForeignKey("CountryId")] 
    public virtual Country Country { get; set; } 

    [ForeignKey("StateId")] 
    public virtual States States { get; set; } 

    [ForeignKey("CityId")] 
    public virtual City City { get; set; } 

} 

код правка контроллера Item

[HttpGet] 
    public ActionResult Edite(int id) 
    { 

     List<Country> countrylist = db.CountryTb.ToList(); 
     SelectList s2 = new SelectList(countrylist.AsEnumerable(), "id", "name"); 
     ViewBag.SelectCountry = s2; 


     Item I = db.Items.Single(x => x.id == id); 

     return View(I); 
    } 


    [HttpPost] 
    [ActionName("Edite")] 
    public ActionResult Edite_post(int id) 
    { 
     Item I = db.Items.Single(x => x.id == id); 
     UpdateModel(I, null, null, new string[] { "id" }); 
     db.SaveChanges(); 
     return RedirectToAction("Index"); 
    } 

и это мой JQuery код, но я думаю, что это работает только OnChange я хочу работать OnLoad тоже ВОССТАНОВЛЕНИЕ выбранное значение

<script> 
    $(function() { 
     $("#CountryId").change(function() { 
      $.get("/Country/GetStatesById", { ID: $("#CountryId").val() }, function (data) { 
       $("#StateId").empty(); 
       $.each(data, function (index, row) { 
        $("#StateId").append(" <option value='" + row.state_id + "'>" + row.name + "</option>") 
       }); 
      }) 
     }); 
    }); 

</script> 

<script> 
    $(function() { 
     $("#StateId").change(function() { 
      $.get("/Country/GetCitiesById", { ID: $("#StateId").val() }, function (data) { 
       $("#CityId").empty(); 
       $.each(data, function (index, row) { 
        $("#CityId").append(" <option value='" + row.id + "'>" + row.name + "</option>") 
       }); 
      }) 
     }); 
    }); 

</script> 

вот мой HTML код

<!--Country--> 
     <div class="form-group"> 
      @Html.LabelFor(model => model.CountryId, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.DropDownList("CountryId", (SelectList)ViewBag.SelectCountry, "select please", new { @class = "form-control" }) 
       @Html.ValidationMessageFor(model => model.CountryId, "", new { @class = "text-danger" }) 
      </div> 
     </div> 

     <!--States--> 
     <div class="form-group"> 
      @Html.LabelFor(model => model.StateId, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.DropDownList("StateId", new SelectList(Enumerable.Empty<SelectListItem>(), "state_id", "name"), "-- Select --", new { @class = "form-control" }) 
       @Html.ValidationMessageFor(model => model.StateId, "", new { @class = "text-danger" }) 
      </div> 
     </div> 

     <!--City--> 
     <div class="form-group"> 
      @Html.LabelFor(model => model.CityId, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.DropDownList("CityId", new SelectList(Enumerable.Empty<SelectListItem>(), "id", "name"), "-- Select --", new { @class = "form-control" }) 
       @Html.ValidationMessageFor(model => model.CityId, "", new { @class = "text-danger" }) 
      </div> 
     </div> 

здесь таблица Категория

[Table("Category")] 
public class Category 
{ 
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public int id { get; set; } 

    [Required] 
    public string name { get; set; } 

    public virtual ICollection<Item> Items { get; set; } 
} 

здесь таблица Страна

[Table("countries")] 
public class Country 
{ 
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public int id { get; set; } 

    public string sortname { get; set; } 

    public string name { get; set; } 

    public virtual ICollection<States> states { get; set; } 

    public virtual ICollection<Item> Items { get; set; } 
} 

здесь таблица States

[Table("states")] 
public class States 
{ 
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public int state_id { get; set; } 

    public string name { get; set; } 

    public int country_id { get; set; } 

    [ForeignKey("country_id")] 
    public virtual Country countries { get; set; } 

    public virtual ICollection<City> cities { get; set; } 

    public virtual ICollection<Item> Items { get; set; } 
} 

здесь таблица Город

[Table("cities")] 
public class City 
{ 
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public int id { get; set; } 

    public string name { get; set; } 

    public int state_id { get; set; } 

    [ForeignKey("state_id")] 
    public virtual States states { get; set; } 
    public virtual ICollection<Item> Items { get; set; } 
} 
+0

См [это DotNetFiddle] (https://dotnetfiddle.net/1bPZym) для реализации каскадных DropDownLists (в частности, код в контроллер) –

+0

вы можете показать свой класс категории? – Aravind

+0

Я добавил класс –

ответ

0

изменения Try @DropDownList на @DropDownListFor(c => c.CountryID, (SelectList)ViewBag.SelectCountry, "select please", new { @class = "form-control" }) Начало формы будут видеть варианты значений изменения выпадающие и ваш пример CountryID пошлет к контроллеру

0

Проблема может быть из-за вас не может быть установлен вверх навигация Недвижимость. Способ, которым вы ссылались на Код Foriegn действителен, но обратная навигация отсутствует. Не забудьте добавить следующие строки в соответствующие классы.

public virtual ICollection<Category> Categories { get; set; } 

public virtual ICollection<Country> Countries { get; set; } 

public virtual ICollection<States> States { get; set; } 

public virtual ICollection<City> Cities { get; set; } 

Обратитесь к этой ссылке для получения дополнительной information на Entity Framework свойства навигации и отношений

+0

Я уже добавляю его раньше на соответствующие классы! Я думаю, должно быть от jquery? !! –

+0

, пожалуйста, обновите ур пост с Категория или Country класс – Aravind

+0

спасибо за повтор ОК я сделал сейчас –

Смежные вопросы