SelectListItem selected = true 在视图中不起作用

2023-12-24

我有一个性别选择字段(--选择--,男性,女性),我将其填充到我的控制器中。页面加载时,我想要在模型中选择的性别pm.Gender页面加载时自动选择。

值来自pm.Gender回来时为:

  • " "
  • "M"
  • "F"

View:

<%: Model.Gender %>
<%: Html.DropDownListFor(m => m.Gender, (IEnumerable<SelectListItem>)ViewData["gender"], new { @class = "span2" })%>

控制器:

gender = new[] { "Select", "Male", "Female" };
List<SelectListItem> genderselectList = new List<SelectListItem>();
foreach (string item in gender)
{
   SelectListItem sli = new SelectListItem { Text = item, Value = item };

   if (item.Trim().StartsWith(pm.Gender))
      sli.Selected = true;

   genderselectList.Add(sli);
}

ViewData["gender"] = genderselectList;

调试应用程序后,我可以看到genderselectList包含正确的数据Selected = true以获得应该选择的正确值。但是,当页面加载时,本应使用以下命令生成的下拉列表中没有选择任何内容Html.DropDownListFor.

Edit:不适用于任何浏览器。

任何人都知道可能导致此问题的原因是什么?任何帮助,将不胜感激。

Cheers.

编辑:(实施 Kaf 的解决方案后)
好的,这就是我在实施 Kaf 的解决方案后所做的事情。

View:

<%: Html.DropDownListFor(m => m.Gender, (SelectList)(ViewData["gender"]), new { @class = "span2" }) %>

控制器:

gender = new[] { "Select", "Male", "Female" };
List<SelectList> genderselectList = new List<SelectList>();
foreach (string item in gender)
{
    SelectList sli;

    if (item.Trim().StartsWith(pm.Gender))
        sli = new SelectList(GetGender(), item, item, item); 
    else
        sli = new SelectList(GetGender(), item, item);
        //without selectedValue

    genderselectList.Add(sli);
}

ViewData["gender"] = genderselectList;

当我这样做时,我得到以下异常:
Unable to cast object of type 'System.Collections.Generic.List`1[System.Web.Mvc.SelectList]' to type 'System.Web.Mvc.SelectList'.

有人知道我做错了什么吗?


我建议最好使用 SelectList 的强类型属性(而不是使用 ViewBag/ViewData)。我相信您所期望的是您的下拉列表将根据模型中的性别选择进行预先选择。这是一个解决方案(代码不是 100% 干净。但这会起作用)

Model

public class TestModel
{
    public string Gender { get; set; }

    public IEnumerable<SelectListItem> GenderList
    {
        get
        {
            List<SelectListItem> list = new List<SelectListItem> { new SelectListItem() { Text = "Select", Value = "Select" }, new SelectListItem() { Text = "Male", Value = "Male" }, new SelectListItem() { Text = "Female", Value = "Female" } };
            return list.Select(l => new SelectListItem { Selected = (l.Value == Gender), Text = l.Text, Value = l.Value });
        }
    }
}

控制器动作

public ActionResult MyView()
{
    TestModel m = new TestModel();
    m.Gender = "Female";
    return View(m);
}

MyView.cshtml

@model TestModel

@{
    ViewBag.Title = "MyView";
}

<h2>MyView</h2>
@using (Html.BeginForm())
{
    <div>
          @Html.DropDownListFor(model => model.Gender, Model.GenderList)
    </div>
}

OUTPUT

选择“女性”选项的下拉菜单

EDIT

根据评论找到以下示例项目的链接

1) https://github.com/prashanth-t/DropdownDemo_BareBones https://github.com/prashanth-t/DropdownDemo_BareBones(使用 MVC 4 空模板。较小的文件大小,最低限度)

2) https://github.com/prashanth-t/DropdownDemo https://github.com/prashanth-t/DropdownDemo(使用MVC 4互联网应用程序模板。文件大小更大)

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

SelectListItem selected = true 在视图中不起作用 的相关文章

  • “构建”构建我的项目,“构建解决方案”则不构建

    我刚刚开始使用VS2010 我有一个较大的解决方案 已从 VS2008 成功迁移 我已将一个名为 Test 的控制台应用程序项目添加到解决方案中 选择构建 gt 构建解决方案不编译新项目 选择构建 gt 构建测试确实构建了项目 在失败的情况
  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • 在哪里可以找到列出 SSE 内在函数操作的官方参考资料?

    是否有官方参考列出了 GCC 的 SSE 内部函数的操作 即 头文件中的函数 除了 Intel 的 vol 2 PDF 手册外 还有一个在线内在指南 https www intel com content www us en docs in
  • 为什么当实例化新的游戏对象时,它没有向它们添加标签? [复制]

    这个问题在这里已经有答案了 using System Collections using System Collections Generic using UnityEngine public class Test MonoBehaviou
  • 不同枚举类型的范围和可转换性

    在什么条件下可以从一种枚举类型转换为另一种枚举类型 让我们考虑以下代码 include
  • 使用 WebClient 时出现 System.Net.WebException:无法创建 SSL/TLS 安全通道

    当我执行以下代码时 System Net ServicePointManager ServerCertificateValidationCallback sender certificate chain errors gt return t
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • 转发声明和包含

    在使用库时 无论是我自己的还是外部的 都有很多带有前向声明的类 根据情况 相同的类也包含在内 当我使用某个类时 我需要知道该类使用的某些对象是前向声明的还是 include d 原因是我想知道是否应该包含两个标题还是只包含一个标题 现在我知
  • 如何在整个 ASP .NET MVC 应用程序中需要授权

    我创建的应用程序中 除了启用登录的操作之外的每个操作都应该超出未登录用户的限制 我应该添加 Authorize 每个班级标题前的注释 像这儿 namespace WebApplication2 Controllers Authorize p
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 这些作业之间是否存在顺序点?

    以下代码中的两个赋值之间是否存在序列点 f f x 1 1 x 2 不 没有 在这种情况下 标准确实是含糊不清的 如果你想确认这一点 gcc 有这个非常酷的选项 Wsequence point在这种情况下 它会警告您该操作可能未定义
  • 使用 x509 证书签署 json 文档或字符串

    如何使用 x509 证书签署 json 文档或字符串 public static void fund string filePath C Users VIKAS Desktop Data xml Read the file XmlDocum
  • Windows 窗体:如果文本太长,请添加新行到标签

    我正在使用 C 有时 从网络服务返回的文本 我在标签中显示 太长 并且会在表单边缘被截断 如果标签不适合表单 是否有一种简单的方法可以在标签中添加换行符 Thanks 如果您将标签设置为autosize 它会随着您输入的任何文本自动增长 为
  • WPF/C# 将自定义对象列表数据绑定到列表框?

    我在将自定义对象列表的数据绑定到ListBox in WPF 这是自定义对象 public class FileItem public string Name get set public string Path get set 这是列表
  • 是否可以在 .NET Core 中将 gRPC 与 HTTP/1.1 结合使用?

    我有两个网络服务 gRPC 客户端和 gRPC 服务器 服务器是用 NET Core编写的 然而 客户端是托管在 IIS 8 5 上的 NET Framework 4 7 2 Web 应用程序 所以它只支持HTTP 1 1 https le
  • 哪种 C 数据类型可以表示 40 位二进制数?

    我需要表示一个40位的二进制数 应该使用哪种 C 数据类型来处理这个问题 如果您使用的是 C99 或 C11 兼容编译器 则使用int least64 t以获得最大的兼容性 或者 如果您想要无符号类型 uint least64 t 这些都定
  • 良好的 WiX 编辑器 [重复]

    这个问题在这里已经有答案了 我目前正在开发一个使用 WiX 创建 MSI 的项目 我过去在 Sourceforge 上使用 WiXEdit 来管理包含在 WiX 项目中的文件 因为它比直接操作 XML 稍微容易一些 但它仍然有点笨重 有谁知
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new
  • 使用.NET技术录制屏幕视频[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一种方法可以使用 NET 技术来录制屏幕 无论是桌面还是窗口 我的目标是免费的 我喜欢小型 低

随机推荐

  • .net webapi HttpGet 与 HttpPost。为什么使用 HttpGet?

    为什么在WebApi框架中使用HttpGet而不是HttpPost 我很清楚 Post 或 Get 类型之间的区别 一个是通过 url 另一个不是 作为基本理解 但我也知道主要区别 可以在服务器上编辑 是 Post 对发送到服务器的数据大小
  • 如何在 HSQLDB GUI 中执行多个命令?

    我想从 GUI 执行许多命令 我想做很多这样的小组 但我无法让一个小组工作 我想我需要以某种方式强制他们之间的提交 但我不知道如何做到这一点 如果我按顺序单独执行这些命令中的每一个 一切都会按预期进行 我正在使用EPSG dat来自 Geo
  • Google Cloud Vision 的 Advanced_ocr_options[] 是什么?

    我正在尝试查找有关的任何信息advanced ocr options under of ImageContext https cloud google com vision docs reference rest v1 ImageConte
  • uWSGI根据环境变量设置配置

    请帮助我理解uWSGI配置逻辑 我有一个环境变量ENVIRONMENT 假设它的值可以是dev or prod 我想根据以下值设置配置选项ENVIRONMENT always executes print statement doesn t
  • 重塑数组中的数组

    我有一个由 40 个数组组成的数组 每个数组都有 1x150 的形状 有没有办法重塑数组 以便我有 40 个 3x50 数组的数组 我不确定是否有一种方法可以使用 np reshape 并在一行中完成 是吗 这真的是一个arraynp ar
  • Qt 中的 QPointer、QSharedPointer 和 QWeakPointer 类有什么区别?

    我从 Qt 文档中读到了有关QPointer QSharedPointer and QWeakPointer类 它说 QPointer是一个模板类 它为 Qt 对象提供受保护的指针 其行为类似于普通的 C 指针 只不过当引用的对象被销毁并且
  • 如何限制正则表达式捕获组?

    我不明白如何限制捕获组 如果我有这样的正则表达式 w 2 s w 2 4 15 我认为这会捕获任何字符串 正好两个字 每个单词至少 2 个字符长 并且整个字符串不超过 15 个字符 但是我的捕获组的限制不起作用 我可以限制捕获组吗 附言 我
  • 使用golang http包时如何限制客户端IP地址

    我正在使用 golanghttp包裹 服务器如何限制客户端IP地址 func s Worker Run c chan error apiMux http NewServeMux apiMux HandleFunc test s test a
  • 如何向 NSDictionary 添加布尔值?

    好吧 对于整数我会使用NSNumber 但我猜 YES 和 NO 不是对象 AFAIK 我只能将对象添加到NSDictionary right 我找不到任何布尔值的包装类 有没有 您使用 NSNumber 它有 init 和 number
  • 如何在 debian 64 位上正确安装 wkhtmltopdf?

    我正在尝试安装 wkhtmltopdf 但是当我这样做时 sudo dpkg i wkhtmltox 0 12 1 linux trusty amd64 deb I get Preparing to unpack wkhtmltox 0 1
  • 如何在 C++ 中使用 MethodInvoker?

    我有一个 C CLI 应用程序 它有一个后台线程 我经常希望它把结果发布到主 GUI 上 我读了SO 上的其他地方 https stackoverflow com questions 1136399 how to update textbo
  • 在 Linq 组中查找最大和最小日期时间

    我正在尝试找到最大值和最小值DateTime来自 CSV 导入 我有这个来从临时导入数据DataTable var tsHead from h in dt AsEnumerable select new Index h Field
  • 圆中矩形的最大堆积

    我在一家纳米技术实验室工作 负责硅晶圆切割 晶圆锯仅切割平行线 当然 我们正在努力最大化我们切割的芯片的产量 所有芯片的尺寸都相同 无论是矩形还是正方形 并且芯片都是从圆形晶圆上切下来的 本质上 我试图将最大的矩形打包成一个圆 我对 MAT
  • 连接两个表的查询

    我是MYSQL的新手 对此的任何帮助将不胜感激 我有两个表 Airports 和 Posts 其中包含以下字段 Airports id Airport code Airport name Posts id Source Airport co
  • 将 Velocity 的 WebappResourceLoader 与 Spring 结合使用

    我正在尝试使用 Velocity 创建一个由 Spring 的 JavaMailSender 类邮寄的电子邮件模板 我决定使用 WebappResourceLoader 在我的 Web 应用程序中查找 Velocity 模板 它位于 Vel
  • R 中的数字列名

    我有一个数据框如下 structure list 104 c NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA yes NA NA NA NA 15 c NA NA NA NA gt 4 0 gt 4
  • 在Qt中,对于上下文菜单项,如何隐藏图标的空间

    我正在使用添加上下文菜单QAction对于一个小部件 现在 操作文本旁边有一些空白 我认为这是一个空间QIcon与QAction应该在那里 现在我该如何隐藏这个空间 我尝试这样做 action gt setIcon QIcon 但似乎仍然不
  • 为什么 proguard 只是混淆了没有扩展任何内容的类

    我正在尝试用 proguard 来混淆我的 Android 应用程序 但问题是 当我反编译 apk 时 它只显示更改的变量名称 但类名称与源中的相同 只有一个类的名称发生了更改 这不会扩展任何其他类 我搜索了很多选项 但没有任何效果 所以我
  • 您可以在哪里找到或者如何创建 Chrome 扩展密钥并将其放入您的 manifest.json 文件中?

    希望在我的 Chrome 扩展中实现 Oauth2 我一直在研究如何在 chrome 扩展上实现 oauth2 我已经被困了很长一段时间了 我最终获得了在 background ts 文件中使用 chrome identity 的信息 这是
  • SelectListItem selected = true 在视图中不起作用

    我有一个性别选择字段 选择 男性 女性 我将其填充到我的控制器中 页面加载时 我想要在模型中选择的性别pm Gender页面加载时自动选择 值来自pm Gender回来时为 M F View 控制器 gender new Select Ma