首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >我收到一个错误:“没有'IEnumerable<SelectListItem>‘类型的ViewData项

我收到一个错误:“没有'IEnumerable<SelectListItem>‘类型的ViewData项
EN

Stack Overflow用户
提问于 2011-09-19 14:46:34
回答 2查看 3K关注 0票数 1

我得到了一个错误:“没有'IEnumerable‘类型的时区项目具有’ViewData‘键”。

视图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<EventListing.Models.EventInfo>" %>               
        <%= Html.DropDownList("TIMEZONE", (IEnumerable<SelectListItem>)ViewData["TIMEZONE"], "Select Timezone")%>

控制器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ViewData["TIMEZONE"] = new SelectList(EventModel.getTIMEZOMES, "Key", "Value");
return View();

模型页面

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static IList<KeyValuePair<string, string>> getTIMEZOMES
        {
            get
            {
                Dbhelper DbHelper = new Dbhelper();
                IList<KeyValuePair<String, String>> Timezone = new List<KeyValuePair<String, String>>();
                DbCommand cmd = DbHelper.GetSqlStringCommond("SELECT * FROM TMP_TIMEZONES");
                DbDataReader Datareader = DbHelper.ExecuteReader(cmd);
                while (Datareader.Read())
                {
                    Timezone.Add(new KeyValuePair<String, String>(Datareader["ABBR"].ToString(), Datareader["NAME"].ToString()));
                }

                return Timezone;
            }
        }

请给出解决方案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-19 14:53:31

一个可能的原因是,在控制器中,您可能没有将数据放入ViewData["TimeZone"]。试着调试它,看看你得到了什么。

票数 1
EN

Stack Overflow用户

发布于 2011-09-19 14:50:50

不应使用相同的属性将dropdownlist绑定到和selectlist。它们应该是不同的。第一个参数必须表示一个标量属性,该属性将用作生成的select的名称。第二个参数必须是列表:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<%= Html.DropDownList(
    "SelectedTimeZone", 
    (IEnumerable<SelectListItem>)ViewData["TIMEZONE"], 
    "Select Timezone"
) %>

这将使用ViewData["TIMEZONE"]中包含的集合生成select,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<select name="SelectedTimeZone">
    <option value="1">zone 1</option>
    ...
</select>

提交表单时,您将在请求中查找SelectedTimeZone属性,以获取相应的选定值。

这就是说,我注意到你的视图是强类型的某个模型:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Inherits="System.Web.Mvc.ViewPage<EventListing.Models.EventInfo>"

但在返回此视图时,您没有传递任何模型:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ViewData["TIMEZONE"] = new SelectList(EventModel.getTIMEZOMES, "Key", "Value");
return View(); // <!-- where is the Model???

因此,我建议您使用视图模型:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class MyViewModel
{
    public SelectList TimeZones { get; set; }
    public string SelectedTimeZone { get; set; }

    // ... include some other properties that might be
    // needed by this view
}

然后让您的控制器操作填充此视图模型:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public ActionResult Index()
{
    var model = new MyViewModel
    {
        TimeZones = new SelectList(EventModel.getTIMEZOMES, "Key", "Value")
    };
    return View(model);
}

最后,在你的强类型视图中使用一个强类型的DropDownListFor助手:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<%@ Page 
    Title="" 
    Language="C#" 
    MasterPageFile="~/Views/Shared/Site.Master" 
    Inherits="System.Web.Mvc.ViewPage<EventListing.Models.MyViewModel>" 
%>

<%= Html.DropDownListFor(
    x => x.SelectedTimeZone, 
    Model.TimeZones, 
    "Select Timezone"
) %>
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7472752

复制
相关文章
html.dropdownlistfor_see的用法
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/07
7010
html.dropdownlistfor_see的用法
ASP.NET MVC的Model元数据与Model模板:将”ListControl”引入ASP.NET MVC
我们不仅可以创建相应的模板来根据Model元数据控制种类型的数据在UI界面上的呈现方法,还可以通过一些扩展来控制Model元数据本身。在某些情况下通过这两者的结合往往可以解决很多特殊数据的呈现问题,我
蒋金楠
2018/01/15
4.8K0
ASP.NET MVC的Model元数据与Model模板:将”ListControl”引入ASP.NET MVC
TagHelper+Layui封装组件之Radio单选框
TagHelper+Layui封装组件之Radio单选框 标签名称:cl-radio 标签属性: asp-for:绑定的字段,必须指定 asp-items:绑定单选项 类型为:IEnumerable<SelectListItem> 太简单了,直接上代码了 RadioTagHelper代码 using System; using System.Collections.Generic; using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.Asp
易墨
2018/09/14
1.4K0
MVC RC2中关于HtmlHelper给DropDownList设置初始选中值的问题
Asp.Net MVC RC2中Helper提供的DropDownList好象并不太好用,特别想给下拉框设置初始选中值的时候(可能我还没找到正确的方法) 小试了一下,有二个简单的解决办法: 1.回到最原始的asp的办法,直接在view的循环中判断,具体代码就不写了,有过Asp/Php经验的一点就明白 2.自己再写一个DropDownList的重载版本,如下: Code /// <summary> /// 生成下拉列表 /// </summary> /// <param name="helper"></
菩提树下的杨过
2018/01/22
1.1K0
下拉框Html.DropDownList 和DropDownListFor 的经常用法
大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。 一、非强类型: Controller: ViewData[“AreId”] = from a in rp.GetArea() select new SelectListItem { Text=a.AreaName, Value=a.AreaId.ToString() }; View: @Html.DropDownList(“AreId”) 还能够给其加上一个默认选项:@Html.DropDownList(“AreId”, “请选择”);
全栈程序员站长
2022/07/12
1.5K0
MVC Html.DropDownList 和DropDownListFor 的常用方法
还可以给其加上一个默认选项:@Html.DropDownList("AreId", "请选择");
wfaceboss
2019/04/08
1.4K0
asp.net core封装layui组件示例分享
用什么封装?这里只是用了TagHelper,是啥?自己瞅[文档](https://docs.microsoft.com/zh-cn/aspnet/core/mvc/views/tag-helpers/authoring)去 在学习使用TagHelper的时候,最希望的就是能有个Demo能够让自己作为参考 怎么去封装一个组件? 不同的情况怎么去实现? 有没有更好更高效的方法? 找啊找啊找,最后跑去看了看mvc中的[TagHelpers](https://github.com/aspnet/Mvc/blob
易墨
2018/09/14
2K0
ASP.NET MVC5高级编程——(4)表单和HTML辅助方法
表单辅助方法、表单元素辅助方法、链接辅助方法、PartialView和 ChildAction方法。
浩Coding
2019/07/03
3K0
ASP.NET MVC5高级编程——(4)表单和HTML辅助方法
扩展htmlhelper.DropDownListFor 支持list数据源和option增加属性
mvc自带的DropDownListFor数据源必须是IEnumerable<SelectListItem>。并且option不支持增加自定义属性。在使用bootstrap-select组件的时候,发现不是很好用。所以扩展了一下。
旺财的城堡
2018/11/20
8100
asp.net mvc 下拉框级联
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/162926.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/15
8640
扩展方法IEnumerable<T>转换为IList<SelectListItem> ,提供@Html.DropDownList使用
由于在MVC中经常会使用到@Html.DropDownList方法,而该方法接收的是List<SelectListItem> 参数,因此就想着写一个扩展方法,直接把IEnumerable转换为List<SelectListItem>类型,这样使用起来会比较方便
写代码的猿
2019/04/11
7860
ASP.NET MVC 重点教程一周年版 第九回 HtmlHelper
由前篇我们所讲的Helper演化,我们思考,对于这种代码我们是不是也可以用一个Helper来自动绑定数据呢
重典
2022/04/11
8590
三层与mvc
说明,每一张表对应有crud综合分析可以得知区别在于对应的类型不同以及一些参数不一样,
wfaceboss
2019/04/08
6670
ASP.NET MVC编程——控制器
每一个请求都会经过控制器处理,控制器中的每个方法被称为控制器操作,它处理具体的请求。 1操作输入参数 控制器的操作的输入参数可以是内置类型也可以是自定义类型。 2操作返回结果 结果类型 调用方法 备注 ContentResult Content 文本类型 FileContentResult/FileStreamResult/FilePathResult File 文件类型 HttpStatusCodeResult(HttpNotFou
甜橙很酸
2018/03/30
2.2K0
ViewBag与ViewData
ViewBag.CurrentTime等同于ViewData["CurrentTime"]
2018/09/03
8130
[ASP.NET MVC]通过对HtmlHelper扩展简化“列表控件”的绑定
在众多表单元素中,有一类<select>元素用于绑定一组预定义列表。传统的ASP.NET Web Form中,它对应着一组重要的控件类型,即ListControl,我们经常用到DropDownList, ListBox、CheckBoxList和RadioButtonList都是其子类。ASP.NET MVC通过对HtmlHelper和HtmlHelper<TModel>的扩展实现了对不同类型的<select>元素的绑定,它们以扩展方法的形式定义在SelectExtensions中。当我们在操作这些扩展方法
蒋金楠
2018/01/16
1.3K0
[ASP.NET MVC]通过对HtmlHelper扩展简化“列表控件”的绑定
@Html.DropDownList[通俗易懂]
@Html.DropDownList(“ID”, Model.SystemParameterList)
全栈程序员站长
2022/09/06
4020
Postman没有选择文件,但是后端还接收到的文件
Postman往后端传输文件,没有选择文件,但是后端还接收到的文件。但文件名为空,大小为0;
ha_lydms
2023/08/09
3150
Postman没有选择文件,但是后端还接收到的文件
图文ASP.Net MVC Razor页面中HtmlHelper帮助程序的写法
明志德道
2023/10/21
1570
图文ASP.Net MVC  Razor页面中HtmlHelper帮助程序的写法
IEnumerable<T>和IQueryable<T>区分
LINQ查询方法一共提供了两种扩展方法,在System.Linq命名空间下,有两个静态类:Enumerable类,它针对继承了IEnumerable<T>接口的集合进行扩展;Queryable类,针对继承了IQueryable<T>接口的集合进行扩展。我们会发现接口IQueryable<T>实际也是继承了IEnumerable<T>接口的,既然这样微软为什么要设计出两套扩展方法呢?
CherishTheYouth
2019/09/11
9260
IEnumerable<T>和IQueryable<T>区分

相似问题

没有‘ViewData’类型的IEnumerable<SelectListItem>项

11

如何没有键为“ViewData”的'IEnumerable<SelectListItem>‘类型的IEnumerable<SelectListItem>项?

10

没有“ViewData”类型的“IEnumerable<SelectListItem>”项具有“.”键。

23

没有“ViewData”类型的“IEnumerable<SelectListItem>”项具有“.”键。

10

DropDown列表错误:“没有'IEnumerable<SelectListItem>‘类型的ViewData项

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文