我收到错误“没有类型为 'IEnumerable' 的 ViewData 项”

2023-12-05

我收到错误“不存在具有键“TIMEZONE”的“IEnumerable”类型的 ViewData 项”。

View

        <%@ 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")%>

控制器

ViewData["TIMEZONE"] = new SelectList(EventModel.getTIMEZOMES, "Key", "Value");
return View();

型号页

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;
            }
        }

请给出解决方案。


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

<%= Html.DropDownList(
    "SelectedTimeZone", 
    (IEnumerable<SelectListItem>)ViewData["TIMEZONE"], 
    "Select Timezone"
) %>

这将使用包含在ViewData["TIMEZONE"]像这样生成选择:

<select name="SelectedTimeZone">
    <option value="1">zone 1</option>
    ...
</select>

提交表格后,您将查找SelectedTimeZone请求中的属性来获取相应的选定值。

话虽如此,我注意到您的视图是强类型化到某个模型的:

Inherits="System.Web.Mvc.ViewPage<EventListing.Models.EventInfo>"

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

ViewData["TIMEZONE"] = new SelectList(EventModel.getTIMEZOMES, "Key", "Value");
return View(); // <!-- where is the Model???

所以我建议你使用视图模型:

public class MyViewModel
{
    public SelectList TimeZones { get; set; }
    public string SelectedTimeZone { get; set; }

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

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

public ActionResult Index()
{
    var model = new MyViewModel
    {
        TimeZones = new SelectList(EventModel.getTIMEZOMES, "Key", "Value")
    };
    return View(model);
}

最后在强类型视图中使用强类型 DropDownListFor 帮助器:

<%@ 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"
) %>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我收到错误“没有类型为 'IEnumerable' 的 ViewData 项” 的相关文章

  • 为 Visual Studio 2013 编译 Tesseract

    我正在尝试使用tesseract在 Visual Studio 2013 中 我在链接器 gt 输入 不是 libtesseract302 static lib 中使用 libtesseract302 lib 一切都正常 并且已编译并运行
  • 如何为 C 分配的 numpy 数组注册析构函数?

    我想在 C C 中为 numpy 数组分配数字 并将它们作为 numpy 数组传递给 python 我可以做的PyArray SimpleNewFromData http docs scipy org doc numpy reference
  • 将 System.Windows.Input.KeyEventArgs 键转换为 char

    我需要将事件参数作为char 但是当我尝试转换 Key 枚举时 我得到的字母和符号与传入的字母和符号完全不同 如何正确地将密钥转换为字符 这是我尝试过的 ObserveKeyStroke this new ObervableKeyStrok
  • 生成(非常)大的非重复整数序列而不进行预洗牌

    背景 我编写了一个简单的媒体客户端 服务器 我想生成一个不明显的时间值 随从客户端到服务器的每个命令一起发送 时间戳中将包含相当多的数据 纳秒分辨率 即使它不是真正准确 因为现代操作系统中计时器采样的限制 等 我想做的 在 Linux 上
  • 单击 form2 上的按钮触发 form 1 中的方法

    我对 Windows 窗体很陌生 我想知道是否可以通过单击表单 2 中的按钮来触发表单 1 中的方法 我的表格 1 有一个组合框 我的 Form 2 有一个 保存 按钮 我想要实现的是 当用户单击表单 2 中的 保存 时 我需要检查表单 1
  • 使用 JNI 从 Java 代码中检索 String 值的内存泄漏

    我使用 GetStringUTFChars 从使用 JNI 的 java 代码中检索字符串的值 并使用 ReleaseStringUTFChars 释放该字符串 当代码在 JRE 1 4 上运行时 不会出现内存泄漏 但如果相同的代码在 JR
  • 将复杂类型数组添加到 RouteValueDictionary

    我想知道是否有一种优雅的方法将复杂类型数组添加到 RouteValueDictionary 或兼容类型 例如 如果我有一个类和一个操作 public class TestObject public string Name get set p
  • 为什么我的 ASP.NET MVC 应用程序在单个会话中多次触发 Session_Start?

    我们有一个 MVC NET 应用程序在重新启动时遇到致命错误 在 Session Start 事件处理程序中 我们将会话 id 添加到字典中 在 Session End 处理程序中 我们将其删除 考虑以下请求序列 获取主页 mvc 获取ma
  • 未经许可更改内存值

    我有一个二维数组 当我第一次打印数组的数据时 日期打印正确 但其他时候 array last i 的数据从 i 0 到 last 1 显然是一个逻辑错误 但我不明白原因 因为我复制并粘贴了 for 语句 那么 C 更改数据吗 I use g
  • 如何将自定义 JSON 文件添加到 IConfiguration 中?

    我正在使用 asp net Autofac 我正在尝试加载自定义 JSON 配置文件 并基于该文件创建 实例化 IConfiguration 实例 或者至少将我的文件包含到默认情况下构建的 IConfiguration asp net 中
  • 如何编写一个同时需要请求和响应Dtos的ServiceStack插件

    我需要提供本地化数据服务 所有本地化的响应 Dto 都共享相同的属性 IE 我定义了一个接口 ILocalizedDto 来标记那些 Dto 在请求端 有一个ILocalizedRequest对于需要本地化的请求 Using IPlugin
  • std::async 与重载函数

    可能的重复 std bind 重载解析 https stackoverflow com questions 4159487 stdbind overload resolution 考虑以下 C 示例 class A public int f
  • 如何从main方法调用业务对象类?

    我已将代码分为业务对象 访问层 如下所示 void Main Business object public class ExpenseBO public void MakeExpense ExpensePayload payload var
  • 如何对 Web Api 操作进行后调用?

    我创建了一个 Web API 操作 如下所示 HttpPost public void Load string siteName string providerName UserDetails userDetails implementat
  • C++ 密码屏蔽

    我正在编写一个代码来接收密码输入 下面是我的代码 程序运行良好 但问题是除了数字和字母字符之外的其他键也被读取 例如删除 插入等 我知道如何避免它吗 特q string pw char c while c 13 Loop until Ent
  • 有没有办法强制显示工具提示?

    我有一个验证字段的方法 如果无法验证 该字段将被清除并标记为红色 我还希望在框上方弹出一个工具提示 并向用户显示该值无效的消息 有没有办法做到这一点 并且可以控制工具提示显示的时间 我怎样才能让它自己弹出而不是鼠标悬停时弹出 If the
  • memset 未填充数组

    u32 iterations 5 u32 ecx u32 malloc sizeof u32 iterations memset ecx 0xBAADF00D sizeof u32 iterations printf 8X n ecx 0
  • 使用 GhostScript.NET 打印 PDF DPI 打印问题

    我在用GhostScript NET http ghostscriptnet codeplex com打印 PDF 当我以 96DPI 打印时 PDF 打印效果很好 但有点模糊 如果我尝试以 600DPI 打印文档 打印的页面会被极大地放大
  • 检查Windows控制台中是否按下了键[重复]

    这个问题在这里已经有答案了 可能的重复 C 控制台键盘事件 https stackoverflow com questions 2067893 c console keyboard events 我希望 Windows 控制台程序在按下某个
  • 当另一个线程可能设置共享布尔标志(最多一次)时,是否可以读取共享布尔标志而不锁定它?

    我希望我的线程能够更优雅地关闭 因此我尝试实现一个简单的信号机制 我不认为我想要一个完全事件驱动的线程 所以我有一个工作人员有一种方法可以使用关键部分优雅地停止它Monitor 相当于C lock我相信 绘图线程 h class Drawi

随机推荐

  • 错误:Visual Studio 中未加载 opencv_world310.dll 的符号

    我正在 Visual Studio 2015 中使用 OpenCV 3 1 0 编写程序 大多数操作工作正常 但是 我收到访问冲突错误 我已经调试了该项目 执行faceClassifier load haarcascade frontalf
  • 如何检查数组中每个项目的第一个字母?

    我正在构建一个猪拉丁语翻译器 但我不知道如何识别输入单词的第一个字母 我已将输入转换为数组 其中每个项目都是一个新单词 但是如何选择每个项目的每个第一个字母来确定它是否是辅音 元音 等 a This is a sentence for wo
  • 为什么结构体字段显示为空?

    我正在努力从以下代码中获得正确的输出 package main import encoding json fmt func main var jsonBlob3 byte name Platypus spec Monotremata id
  • android 所有动态生成按钮的点击事件

    我编写代码来生成动态按钮 但我不知道如何动态实现每个按钮的单击事件 我找到了一些答案 但无法使用我的代码 请帮助我 这是我的代码 public class dynamicbuttion extends Activity Override p
  • 如何按需挂起 Java 线程?

    我正在用java开发一个多线程游戏 我有几个工作线程从中央线程管理器获取模块 然后自行执行 现在 如果它暂时没有什么可执行的 我希望能够暂停这样的线程 我尝试从线程管理器调用 wait 方法 但这只会导致它忽略后面的 notificatio
  • 带边框和透明间隙的 CSS 三角形切口

    我需要使用 CSS 绘制以下图案作为页面各部分之间的分隔符 使用skewX 技术来自这个答案 我能够准确地模仿三角形切口 两个伪元素附加到下部部分的顶部 一个向左倾斜 一个向右倾斜 以便上部部分的背景显示出来 但我不知道如何添加边框 如第一
  • SQL 一对多

    我正在尝试为我们拥有的系统构建一个 SQL 模式channels 每个都有一个id 以及一个或多个fixtures 我很难找到实现这种一对多映射的方法 即一channel太多fixtures 我正在使用H2数据库引擎 我不能有桌子 id f
  • Excel 数据验证列表,其中排除已使用的值

    我有 A 列 其中有一些数据 B 列有一个数据验证列表下拉列表 其中包含 A 列中的值 当我从 B 列中的列表中选择值 例如 B1 A B2 B B3 C 时 我希望下拉列表排除该列中已使用的值 因此 在屏幕截图中 B4 中的下拉列表应该只
  • 为什么 iPhone 视频是颠倒的?

    我有一个使用标准相机应用程序捕获的视频文件 并使用它从我的 Iphone 5 复制btsync orig mov ISO Media Apple QuickTime movie 那个播放倒挂在 mplayer 或 vlc 中 当我使用 AW
  • 从 M 文件控制 simulink

    我正在尝试从 M 文件控制 simulink 我想要在 M 文件中做的是给 simulink 模型一些输入 运行 simulink 模型 在 0 6 秒时更改一个输入值 然后使用新输入继续运行 simulink 模型 我已经知道通过使用se
  • Xamarin 表单:如何在设备外部存储中创建文件夹和文件?

    我正在尝试在设备的外部存储上的该文件夹中创建一个文件夹和一个文本文件 与 WhatsApp 的做法相同 另外 我需要向该文件写入一些数据 是否可以以 xamarin 形式执行此操作 或者我们应该使用依赖服务吗 提前致谢 UPDATE Luc
  • 使用 HTMLAgilityPack 进行 XHTML 解析

    我在使用 HTMLAgilityPack 找到的元素内有以下元素的列表
  • 用户代理,从字符串中提取操作系统和浏览器

    我想从用户代理字符串中提取完整的操作系统名称和浏览器 我怎样才能做到这一点 我认为获取完整的操作系统名称和完整的浏览器名称很棘手 因为许多浏览器以不同的方式标识自己 您可能需要一些奇特的正则表达式 但它甚至可能无法 100 地工作 这是我用
  • FilterRegistrationBean url 模式不起作用

    我正在注册一个过滤器 如下所示用于日志输出 我想要网址模式 api Bean public CommonsRequestLoggingFilter commonsRequestLoggingFilter CommonsRequestLogg
  • HTML select - 在 HTML 中显示值属性但保留选项文本

    我有一个清单option各州在select元素
  • 获取 Blazor 组件中的当前用户

    我正在使用 Blazor 和 Windows 身份验证启动一个新站点 并且需要识别当前查看页面 组件的用户 对于 Razor 页面 可以使用以下命令访问当前用户名Context User Identity Name 但这似乎在 Blazor
  • React 类组件与功能组件[重复]

    这个问题在这里已经有答案了 Before React16 class components被使用过functional components每当需要使用时state or lifecycle methods在你的组件中 在最新版本中引入了
  • 背景图像渐变

    我有一个具有透明背景的图像 我想将其作为所有控件后面的图像覆盖在我的窗口上 我的窗口背景已经有一个渐变画笔 但通过谷歌搜索和实验我可以看出 你不能有两个背景画笔 这是不起作用的 XAML 你有什么建议 也许还有另一种设置图像的方法
  • float 对象没有属性 __getitem__

    这是我从这个函数中得到的错误 TypeError float object has no attribute getitem The self target只是一个元组并且self x and self y是整数 我不知道我做错了什么 cl
  • ' 的 ViewData 项”' aria-label='我收到错误“没有类型为 'IEnumerable' 的 ViewData 项”'> 我收到错误“没有类型为 'IEnumerable' 的 ViewData 项”

    我收到错误 不存在具有键 TIMEZONE 的 IEnumerable 类型的 ViewData 项 View 控制器 ViewData TIM