2016-09-01 3 views
0

문제가 있습니까?편집보기에서 선택된 지구의 실제 도시 이름을 가져 오는 방법

내가 지구는 내가 지구

에 대한 국가 및 도시를 선택 조회하는

편집 기능을 가지고 내가 컨트롤러 내부 지구 컨트롤러가

세부

을 선택하기위한 틀린 도시를 표시하는 데 시간이 더 시도 편집보기의

하지만 지구

은 국가가 선택 지역에 대한

코드 지구 컨트롤러에서

public ActionResult Edit(int id) 
     { 

      Destrict D = db.Destricts.Find(id); 
      ViewBag.CountryId = new SelectList(db.Countries.ToList(), "Id", "CountryName", D.City.Country.Id); 
      return View(D); 

     } 
public JsonResult getcitybyid(int x) 
     { 

      var data = db.Cities.Where(a => a.CountryId == x).ToList(); 
      return Json(data, JsonRequestBehavior.AllowGet); 
     } 
in view of edit 

CountryName:@Html.DropDownList("CountryId","") 
City:<select id="citylist"></select> 

in jquery i fill country and city using 

      $("#CountryId").change(function() { 


       var id = $("#CountryId").val(); 
       $("#citylist").empty(); 
       $.ajax({ 
        url: "/District/getcitybyid", 
        data: {x: id}, 
        success:function(res) 
        { 

         $.each(res, function (i, e) { 


           $("#citylist").append("<option value='" + e.Id + "'>" + e.CityName + "<option>") 



      $("#CountryId").change(); 

이미지 쇼를 올바른 국가를 표시 선택을위한 틀린 도시를 표시 내가 가지고있다

이 라인

$("#citylist").append("<option value='" + e.Id + "'>" + e.CityName + "<option>") 

문제가에서

get correct city for district

답변

0

봐, 당신은 option 태그를 닫지 않았다, 대신 당신은 새가 열립니다! 이것이 두 가지 옵션을 보는 이유이며, 절반은 빈 디스플레이 텍스트입니다.

이렇게 수정해야합니다 (이 옵션을 </option>과 올바르게 닫음). 당신의 편집 화면

$("#citylist").append("<option value='" + e.Id + "'>" + e.CityName + "</option>"); 

, 난이

public class EditDistrictVm 
{ 
    public List<SelectListItem> Countries { set;get;} 
    public int SelectedCountry { set;get;} 
    public List<SelectListItem> Cities { set;get;} 
    public int SelectedCity { set;get;} 
    public string Name { set;get;} 
    public int Id { set;get;} 
} 

같은 뷰 모델을 생성하고 편집 작업에 부하 데이터를이보기 모델의 객체와 볼 보내 좋습니다. 이제

public ActionResult Edit(int id) 
{ 
    var vm = new EditDistrictVm { Id=id}; 
    var d= db.Disticts.FirstOrDefault(id); 
    vm.Name = d.Name; 
    vm.Countries = db.Countries 
        .Select(f=>new SelectListItem { Value=f.Id.ToString(), 
                Text = f.CountryName}).ToList(); 
    //Now get cities for the country for this district 
    vm.Cities = db.Cities 
       .Where(t=>t.CountryId==d.City.CountrId) 
       .Select(f=>new SelectListItem { Value=f.Id.ToString(), 
               Text = f.CountryName}).ToList(); 

    //Set the selected options in dropdowns 
    vm.SelectedCountryId=d.City.CountrId; 
    vm.SelectedCityId = d.CityId; 

    return View(vm); 
} 

확인하여 편집보기가 강력하게이보기 모델에 입력 된

@model EditDistrictVm 
@using(Html.BeginForm()) 
{ 
    @Html.HiddenFor(f=>f.Id) 
    @Html.TextBoxFor(f=>f.Name) 
    @Html.DropDownListFor(f=>f.SelectedCountry, Model.Countries) 
    @Html.DropDownListFor(f=>f.SelectedCity, Model.Cities) 
    <input type="submit" /> 
} 
+0

죄송 문제에 대한 잘못된 이미지 문제에 대한 올바른 이미지가있다 http://www.mediafire.com/view /e3n80milbox9uk6/city_selected_wrong.jpg –

+0

지금 당신의 문제는 무엇입니까? 표에 올바른 데이터가 있으면 도시가 선택한 국가에 속하게됩니다. – Shyju

+0

위 이미지가 보이면 필요한 부분을 이해할 수 있습니다. –