首页 新闻 会员 周边

MVC中的DropDownListFor

0
[已解决问题] 解决于 2016-08-31 19:40
不存在具有键“Id”的“IEnumerable<SelectListItem>”类型的 ViewData 项。
问题补充:

DropDownListFor做省市县的三级联动

NeXT、的主页 NeXT、 | 菜鸟二级 | 园豆:295
提问于:2016-08-25 02:18
< >
分享
最佳答案
0

as List<xxx>改成IEnumerable<xxx>

奖励园豆:5
万德福儿 | 初学一级 |园豆:9 | 2016-08-25 13:40

我改成as IEnumerable<SelectListItem>,他还是报了同样的错误哦。是不是在这个页面PartialView的问题呢

NeXT、 | 园豆:295 (菜鸟二级) | 2016-08-25 13:46

@NeXT1995: return PartialView("");你并没有给这个cshtml传入model值,而你在页中又引用了model=>model.Id

万德福儿 | 园豆:9 (初学一级) | 2016-08-25 13:52

@qust_青岛: 我查询了一个model返给cshtml,但是呢,也是说

不存在具有键“AreaType”的“IEnumerable<SelectListItem>”类型的 ViewData 项。

NeXT、 | 园豆:295 (菜鸟二级) | 2016-08-25 14:02

@NeXT1995: cshtml页面接收了么?@model xxxx像这样.

万德福儿 | 园豆:9 (初学一级) | 2016-08-25 14:04

@qust_青岛: 我取消了用Model的,还有什么方法吗


@{
ViewBag.Title = "PartialCity";
}

@Html.DropDownList( "SelectCity", ViewData["cityLists"] as IEnumerable<SelectListItem>, "--------------请选择--------------", new { id = "City", Name = "City" })

 

这里的SelectCity也是不行的。

NeXT、 | 园豆:295 (菜鸟二级) | 2016-08-25 14:54

@NeXT1995: 这样按说可以的。你说“这里的SelectCity也是不行的。”是什么意思?

万德福儿 | 园豆:9 (初学一级) | 2016-08-25 15:36

@qust_青岛: 他也是出现了一样的提示,说不存在具有键“SelectCity”的“IEnumerable<SelectListItem>”类型的 ViewData 项。

 

不过其实做这个三级联动的。不知道还有没有什么好的方法。本来的数据太大了,一下子加载到页面太卡了,所以我就用了ajax去请求,本来在主页面的那里省市县三个

DropDownListFor都是可以显示的。然后ajax请求了ShowCity控制器 return PartialView("PartialCity");这个视图就一直了那个错误

NeXT、 | 园豆:295 (菜鸟二级) | 2016-08-25 15:44

@NeXT1995: 原来如此,你把viewdate[xx]返回给partialview;即:return partialview("viewname",viewdata);

参考这个重载版本:protected internal virtual PartialViewResult PartialView(string viewName, object model);

万德福儿 | 园豆:9 (初学一级) | 2016-08-25 15:49

@qust_青岛: eturn partialview("viewname",viewdata);你这里所说的viewdata是查询出来的model吗?还是viewdate[xx]这里的viewdate

NeXT、 | 园豆:295 (菜鸟二级) | 2016-08-25 16:00

@qust_青岛: 我知道主要问题是这样的:1.我有一个主页面,里面放了三个DropDownListFor,其中有一个是@Html.Partial 2我用异步加载次要页面的东西到主页面的@Html.Partial 。然后呢,因为次页面就是我一开碰到的那个问题所在的页面了。因为加载主页面的@Html.Partial ,她就直接去读取次页面的内容了,因为还没经过控制器处理,所以他就会报错。不过目前我还没找到解决方法,有时间你帮我看看吧

NeXT、 | 园豆:295 (菜鸟二级) | 2016-08-25 20:06
其他回答(2)
0

代码呢?让大家猜你是怎么写的吗?

顾晓北 | 园豆:10844 (专家六级) | 2016-08-25 08:40

支持(0) 反对(0) NeXT、 | 园豆:295 (菜鸟二级) | 2016-08-25 10:30

@NeXT1995: 这是你的ViewData【citylists】为空了?

支持(0) 反对(0) 顾晓北 | 园豆:10844 (专家六级) | 2016-08-25 10:35

@顾晓北: 我用了固定参数去查询,是可以查询集合来的,在PartialCity这个页面也能显示,但是在主页面就没办法显示了,还是报了那个错误,我觉得应该是别的问题的。集合应该是没问题的

支持(0) 反对(0) NeXT、 | 园豆:295 (菜鸟二级) | 2016-08-25 10:50

@NeXT1995: 你如果吧selectlistItem换个类呢?换一个有所谓“id”的

支持(0) 反对(0) 顾晓北 | 园豆:10844 (专家六级) | 2016-08-25 10:52

@顾晓北: 您是说在页面那里改动model.ID化成别的字段吗?我改过那里也不行哦

支持(0) 反对(0) NeXT、 | 园豆:295 (菜鸟二级) | 2016-08-25 11:23

@NeXT1995: 我的意思是List<SelectListItem> 改成List<其他类,这个类有一个类似Id的字段>,但照说MVC不能那么蠢的。。。

支持(0) 反对(0) 顾晓北 | 园豆:10844 (专家六级) | 2016-08-25 11:57

@顾晓北: 是的,我在那里改过了,那些类也是不行的。但是本来这个DropDownListFor我在别的页面也是可以,但是在这里就一直出现了这种错误,后来我对参数进行判断,控制provinceId查出来的cityList一定不为空,但是题还是同样的报错

支持(0) 反对(0) NeXT、 | 园豆:295 (菜鸟二级) | 2016-08-25 12:03
0

用ViewData["citylists"] = new SelectList(cityList,"cityid","cityname")就好了,还循环add搞那么复杂干嘛

balahoho | 园豆:2050 (老鸟四级) | 2016-08-25 14:26

“/”应用程序中的服务器错误。


 

不存在具有键“SelectCity”的“IEnumerable<SelectListItem>”类型的 ViewData 项。

支持(0) 反对(0) NeXT、 | 园豆:295 (菜鸟二级) | 2016-08-25 14:53

@NeXT1995: 你视图里面要换成ViewData["cityLists"] as SelectList 啊,你还用List<SelectListItem>肯定出错

支持(0) 反对(0) balahoho | 园豆:2050 (老鸟四级) | 2016-08-25 16:37

@balahoho: 视图那里我也是改好了的,但是他就是报出这样的错误来的

支持(0) 反对(0) NeXT、 | 园豆:295 (菜鸟二级) | 2016-08-25 17:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册