来自多个视图的MVC DropDownList

时间:2014-07-05 06:38:12

标签: c# asp.net-mvc

我有点问题,我有三个型号:

模特 - 城市

 public int ID{get;set;}
 public String Name { get; set; }

模型 - 郊区

public int ID { get; set; }

public int CityId {get;set;}

public string Name { get; set; }

public String Description { get; set; }

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

model- CitySuburbContext

public DbSet<City> City { get; set; }
public DbSet<Suburb> Suburb { get; set; }  

这是我的控制者:

public ActionResult Index()
        {
            return View("Index",db.Suburb.ToList());
        }
        public ActionResult getSuburb(int id)
        {
            return Json(db.Suburb.Where(s => s.ID.Equals(id)).ToList(), JsonRequestBehavior.AllowGet);
        }

这是我的观点(现在)

@model Admin.Models.Suburb

<header>
    <script src="~/Scripts/dddd.js" type="text/javascript"></script>
</header>

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

@Html.DropDownListFor(m => m.CityId, new SelectList( ((List<SelectListItem>)ViewData["cities"]),"Value","Text"), new { @onChange = "fillSuburb()" })

@Html.DropDownListFor(m => m.ID, Enumerable.Empty<SelectListItem>())

我的问题是。

如何在我的视图中获取数据。我使用CitySuburbContext模型吗? 如果是这样的话?

此外,我想要2个下拉列表,一个包含城市列表,另一个包含所选城市的郊区列表。 我不知道如何解决这个问题,请帮助

1 个答案:

答案 0 :(得分:0)

在视图绑定时绑定您的城市和郊区下拉列表,如下所示:

@Html.DropDownListFor(m => m.cityId, new SelectList( ((List<SelectListItem>)ViewData["cities"]),"Value","Text"), new { @onChange = "fillSuburb()" })

@Html.DropDownListFor(m => m.suburbId, Enumerable.Empty<SelectListItem>())

注意 new {@onChange =&#34; fillSuburb()&#34; } 是一个带有HTML select标签的java脚本onchange事件绑定,在城市更改时调用fillSuburb()方法。

function fillSuburb()
{
    var cityId = $("#cityId").val();
    $.ajax
    {
        url:'/home/getSuburb/'+cityId;
        method:'POST'
        onSuccess: function(data)
        {
           var suburbSelect = $("#suburbId") ;
           suburbSelect.empty();
           for(var suburb in data) {   
               $("<option />", {value: suburb.ID , text: suburb.Name }).appendTo(suburbSelect);
           }
        }
    }
}

从控制器发送IEumrable列表:

public ActionResult getSuburb(int id)
{
    return Json(_dataContext.Suburb.Where(s=>s.ID.equals(id)).toList(), JsonBehaviour.AllowGet);
}