问题吗
我尝试更多时间为选定的地区显示错误的城市
详情
我有区域控制器内部控制器我有编辑功能
我为区域检索所选国家和城市
在编辑视图中。
但它显示错误的城市选区
对于国家/地区,它会显示选定区域的正确国家/地区
码
区控制器中的
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();
图像显示我有什么
答案 0 :(得分:0)
看看这一行
$("#citylist").append("<option value='" + e.Id + "'>" + e.CityName + "<option>")
问题是,你没有关闭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;}
}
并在您的EDIT操作中,将数据加载到此视图模型的对象并发送到视图。
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" />
}