public class tb_Citys
{
public tb_Citys()
{}
#region Model
private int _id;
private string _cityname;
/// <summary>
/// 
/// </summary>
public int ID
{
set{ _id=value;}
get{return _id;}
}
/// <summary>
/// 
/// </summary>
public string CityName
{
set{ _cityname=value;}
get{return _cityname;}
}
#endregion Model }        // 进来后绑定城市信息。
        [HttpGet]
        public ActionResult Register()
        {
            DAL.tb_Citys bllcitys = new MVCNoteBook.DAL.tb_Citys();
            DataTable dt = bllcitys.GetList("1=1").Tables[0]; //获得所有City
            List<SelectListItem> selectcitys = new List<SelectListItem>();
            foreach (DataRow dr in dt.Rows)
            {
                selectcitys.Add(new SelectListItem { Text = dr["CityName"].ToString(), Value = dr["ID"].ToString() });
            }
            ViewData["selectcitys"] = selectcitys;
            return View();
        }
注删页面,选择一个城市   <div class="editor-label">
            <%= Html.LabelFor(model => model.City) %>
        </div>
        <div class="editor-field">
            <%=Html.DropDownListFor(model=>model.City,ViewData["selectcitys"] as IEnumerable<SelectListItem>)%>
            <%= Html.ValidationMessageFor(model => model.City) %>
        </div>
提交报错:The ViewData item that has the key 'City' is of type 'System.Int32' but must be of type 'IEnumerable<SelectListItem>'.找了半天没找到找到办法,求指点。。

解决方案 »

  1.   

    ViewData["tt"] aa = new SelectList(tabel(), "colValue", "colText", defaultValue);
      

  2.   


     [HttpGet]
            public ActionResult Register()
            {
                DAL.tb_Citys bllcitys = new MVCNoteBook.DAL.tb_Citys();
                DataTable dt = bllcitys.GetList("1=1").Tables[0];
                //List<SelectListItem> selectcitys = new List<SelectListItem>();
                //foreach (DataRow dr in dt.Rows)
                //{
                //    selectcitys.Add(new SelectListItem { Text = dr["CityName"].ToString(), Value = dr["ID"].ToString() });
                //}
                //ViewData["selectcitys"] = selectcitys;
                List<tb_Citys> tb_cityslist = new List<tb_Citys>();
                foreach (DataRow dr in dt.Rows)
                {
                    tb_Citys tc = new tb_Citys();
                    tc.ID = (int)dr["ID"];
                    tc.CityName = dr["CityName"].ToString();
                    tb_cityslist.Add(tc);
                }
                ViewData["selectcitys"] = new SelectList(tb_cityslist, "ID", "CityName");
                return View();
            }        <div class="editor-label">
                <%= Html.LabelFor(model => model.City) %>
            </div>
            <div class="editor-field">
                <%=Html.DropDownListFor(model=>model.City,ViewData["selectcitys"] as SelectList)%>
                <%= Html.ValidationMessageFor(model => model.City) %>
            </div>还是报错//接收注册的方法[HttpPost]
            public ActionResult Register(Register_tb_User user)
            {
                if (ModelState.IsValid)
                {
                    DAL.tb_User daltb_user = new MVCNoteBook.DAL.tb_User();
                    if (daltb_user.Add(user))
                    {
                        ModelState.AddModelError("", "添加用户失改!");
                    }
                    else
                    {
                        return RedirectToAction("Login");
                    }
                }
                return View(user);
            }
    不知道什么原因,悲剧
      

  3.   

    类型 没有对应上,
    你的model.City 是 什么类型,是int类型? 下拉框要的是字符串, 是不是Model.CityName之类的。
      

  4.   

    恩,,我也考虑过是不是这个问题,Model.City是 int select 里面的Value 是 string ,,不知道咋整
      

  5.   

    我怎么没看到 .City 这个属性呢?你返回了强类型啦?
      

  6.   

    额,我解决了,,代码都没错,原因是我忘了,提交出错后要重新绑定dropdownlist中的数据