在 ListBoxFor 中选择值的挑战

2023-11-24

最近在开发我的第一个 ASP.Net MVC2 Web 应用程序时,当我需要在列表框中选择多个值时,我遇到了一些问题。我用一些 jQuery 解决了这个问题,但继续编写了一些非常简单的代码来演示。我使用 EF 作为模型,有两个实体 - Customers 和 HelpDeskCalls:

控制器:

 public ActionResult Edit(int id)
    {
        Customer currCustomer = ctx.Customers.Include("HelpDeskCalls").Where(c => c.ID == id).FirstOrDefault();
        List<HelpDeskCall> currCustCalls = (ctx.HelpDeskCalls.Where(h => h.CustomerID == id)).ToList();
        List<SelectListItem> currSelectItems = new List<SelectListItem>();
        List<String> selectedValues = new List<string>();
        foreach (HelpDeskCall currCall in currCustCalls)
        {
            bool isSelected = (currCall.ID % 2 == 0) ? true : false;
            //Just select the IDs which are even numbers...
            currSelectItems.Add(new SelectListItem() { Selected = isSelected, Text = currCall.CallTitle, Value = currCall.ID.ToString() });
            //add the selected values into a separate list as well...
            if (isSelected)
            {
                selectedValues.Add(currCall.ID.ToString());
            }
        }
        ViewData["currCalls"] = (IEnumerable<SelectListItem>) currSelectItems;
        ViewData["currSelected"] = (IEnumerable<String>) selectedValues;
        return View("Edit", currCustomer);
    }

View:

<div class="editor-field">
    <%: Html.ListBoxFor(model => model.HelpDeskCalls, new MultiSelectList(Model.HelpDeskCalls, "ID", "CallTitle", (IEnumerable) ViewData["currSelected"]), new { size = "12" })%>       
    <%: Html.ListBoxFor(model => model.HelpDeskCalls, ViewData["currCalls"] as IEnumerable<SelectListItem>, new { size = "12"}) %>
    <%: Html.ListBox("Model.HelpDeskCalls", new MultiSelectList(Model.HelpDeskCalls, "ID", "CallTitle", (IEnumerable)ViewData["currSelected"]), new { size = "12"}) %>      
    <%: Html.ValidationMessageFor(model => model.HelpDeskCalls) %>
</div>

对于此示例,我仅选择偶数的 HelpDeskCall.ID。我正在为 ListBoxFor 尝试两种不同的语法:一种使用 IEnumerable 的值进行选择,一种使用 IEnumerable 的 SelectListItems。默认情况下,当我运行此代码时,不会对任一 ListBoxFor 进行选择,但非强类型 ListBox 会正确选择。

I read 这个帖子在 ASP.Net 和这个线程就这样,但没有快乐。事实上,如果我将重写 ToString() 添加到我的 HelpDeskCall 类(如 ASP.net 线程中的建议),则所有值都会被选择,这也是不正确的。

如果有人可以阐明这应该如何工作(以及我遗漏或做错了什么),那么新手将非常感激。


下面是一个说明强类型版本的示例:

Model:

public class MyViewModel
{
    public int[] SelectedItemIds { get; set; }
    public MultiSelectList Items { get; set; }
}

控制器:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        // Preselect items with id 1 and 3
        var selectedItemIds = new[] { 1, 3 };

        var model = new MyViewModel
        {
            Items = new MultiSelectList(
                new[] 
                {
                    // TODO: Fetch from your repository
                    new { Id = 1, Name = "item 1" },
                    new { Id = 2, Name = "item 2" },
                    new { Id = 3, Name = "item 3" },
                }, 
                "Id", 
                "Name", 
                selectedItemIds
            )
        };

        return View(model);
    }
}

View:

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

在 ListBoxFor 中选择值的挑战 的相关文章

随机推荐

  • 从 VS 2017 .NET Core 项目中的发布目录中排除文件

    我有一个 gitignore文件在wwwroot我试图排除发布的项目的文件夹 下面的代码似乎不起作用
  • 使用异步模式(queue.BeginReceive、queue.EndReceive)进行 MSMQ 消息接收的反应式扩展 (Rx)

    我已经在我的项目中使用 Rx 进行事件有一段时间了 并且专门用于 Socket 编程 好的部分是它做得很好 管理我的代码 性能优势以及更好的执行和解释 最近我必须修改我的项目的流程 我需要将所有传入数据 来自套接字操作 转储到队列中 使用决
  • 使用不在标头中的函数对 C 进行单元测试

    我开始进行单元测试 但我无法理解某些东西 我的挣扎归结为如何测试仅在 c 源代码中而不是在 h 标头中声明的函数 有些函数不需要在实现之外调用 因为它们只与特定文件相关 由于它们对程序的其他部分不可见 这意味着我的单元测试用例文件看不到这些
  • 在 Vista/7 (C++) 上获取音量变化通知

    我试图在 Windows Vista 7 上主音量发生变化时收到通知 这是我正在使用的代码 include
  • 活动管理员身份验证与用户身份验证冲突

    活跃管理员是一个用于在应用程序中拥有管理仪表板的 gem 它使用 Devise 来登录用户并创建一个单独的admin user管理员的模型 我的应用程序已经使用了 devise 并将其用户作为user模型 自从我开始使用 active ad
  • XmlWriter 写入字符串而不是文件

    我有一个 WCF 服务需要返回 XML 字符串 但似乎作者只想建立一个文件 而不是一个字符串 我试过 string nextXMLstring using XmlWriter writer XmlWriter Create nextXMLs
  • 如何使用 stdClass() 将数组转换为对象[重复]

    这个问题在这里已经有答案了 我制作了以下数组 clasa array e1 gt array nume gt Nitu prenume gt Andrei sex gt m varsta gt 23 e2 gt array nume gt
  • 我需要导入什么才能访问我的模型?

    我想运行一个脚本来填充我的数据库 我想通过 Django 数据库 API 访问它 唯一的问题是我不知道需要导入什么才能访问它 如何才能实现这一目标 也导入您的设置模块 import os os environ DJANGO SETTINGS
  • jQuery 模式对话框和 jqGrid

    如何将 Jquery 模态确认与 jqGrid 一起使用 假设当我提交条目时 它将弹出一个模式对话框并显示名称以及发送到服务器的消息 我的方法 dialog confirm dialog autoOpen false resizable f
  • 是否有一个类似 PropertyPlaceholderConfigurer 的类可以与 Spring 一起使用并接受 XML?

    Spring 有一个非常方便的类 称为属性占位符配置器 它采用标准 properties 文件并将其中的值注入到您的 bean xml 配置中 有谁知道有一个类可以做完全相同的事情 并以相同的方式与 Spring 集成 但接受配置的 XML
  • 加速 Python 中的 MSD 计算

    这是向社区发出的呼吁 看看是否有人有提高 MSD 计算实现速度的想法 它主要基于这篇博客文章的实现 http damcb com mean square disp html 目前 对于 5000 个点的 2D 轨迹 当前的实现大约需要 9
  • Flutter:StatelessWidget.build 被多次调用[重复]

    这个问题在这里已经有答案了 我总是将代码放在我的问题中 但这一次这是不可能的 因为错误可能出现在一千行代码中的任何地方 然而 我注意到我的主屏幕的构建方法 StatelessWidget 它是 a 的后代MaterialApp home 属
  • JavaScript 按 id 合并对象[重复]

    这个问题在这里已经有答案了 在 Javascript 中合并两个数组的正确方法是什么 我有两个数组 例如 var a1 id 1 name test id 2 name test2 var a2 id 1 count 1 id 2 coun
  • RequestFactory 理论:为什么 Locator<>.find() 被如此频繁地调用?

    我是 RequestFactory 的新手 但得到了慷慨的帮助托马斯 布罗耶在查看了下面的文档之后 情况变得好多了 RequestFactory 入门 请求工厂移动部件 GWT 2 4 中的 RequestFactory 更改 但你能解释一
  • 如何在 Python 中重置 TCP 套接字?

    我有一个用 Python 编写的套接字代理 当它从一对通信对等点接收到 RST 时 它将通过让套接字被垃圾收集来关闭与两个对等点的连接 这会导致其他对等方看到 FIN 而不是 RST 这意味着代理有效地将 RST 转换为 FIN 我认为这并
  • Anaconda“无法创建进程”

    我是 Python 新手 我刚刚安装了 Python anaconda python 2 7 在启动 Anaconda 时提示发生了 无法创建进程 的情况 那么这里有人可以帮我吗 我感谢每一个帮助 我遇到了完全相同的错误 因为我的用户名包含
  • SVN:将存储库主干移动到另一个分支(带有历史记录)

    我正在使用带有大量存储库的 SVN 设置 我试图通过将一个的主干移动到另一个的分支来合并一些 旧的是新的主题版本 减去我稍后将应用的一些代码修复 所以这对我来说很有意义 简短版本 我想从 RepositoryA trunk 转到 Repos
  • VB“Financial.Pmt”在 C# 中等效吗?

    Microsoft VisualBasic 程序集中有一个内置函数 我可以在 VB 中这样使用它 Financial Pmt dAPR 100 12 iNumberOfPayments dLoanAmount 1 我当前的项目是用C 编写的
  • 如何使用 jQuery 计算 ASP.NET 中 gridview 的行数

    有谁知道如何使用 jQuery 计算 asp GridView 中的行数 如果没有找到行那么我想做一些事情 A GridView只是呈现为标准 HTML 表格 因此只需计算trGridView 下的元素 var totalRows tr l
  • 在 ListBoxFor 中选择值的挑战

    最近在开发我的第一个 ASP Net MVC2 Web 应用程序时 当我需要在列表框中选择多个值时 我遇到了一些问题 我用一些 jQuery 解决了这个问题 但继续编写了一些非常简单的代码来演示 我使用 EF 作为模型 有两个实体 Cust