【问题标题】:Why isn't multiselect list showing selected items? MVC为什么多选列表不显示所选项目? MVC
【发布时间】:2010-01-26 20:59:33
【问题描述】:

我继续前进,然后又回到这个,但我仍然无法让它工作。

        var companiesList = subcontractRepository.SubcontractCompanies(Subcontract.subcontract_id);
        IEnumerable<Guid> selectedList = companiesList.Select(a => a.Id);
        Companies = new MultiSelectList(companiesList, "Id", "Name", selectedList);

在 SubcontractRepository.cs 中

    public class SelectCompanyItem
    {
        public string Name { get; set; }
        public Guid Id { get; set; }
    }

    public IEnumerable<SelectCompanyItem> SubcontractCompanies(Guid id)
    {
        return
            from c in db.companies
            select new SelectCompanyItem
            {
                Name = c.company_name,
                Id = c.company_id
            };
    }

查看:

        <p>
            <label for="Companies">Company:</label>
            <%= Html.ListBox("Companies", Model.Companies) %>
            <%= Html.ValidationMessage("Companies", "*") %>
        </p>

生成的html:

    <p>
        <label for="Companies">Company:</label>
        <select id="Companies" multiple="multiple" name="Companies"><option value="4cf411d0-e111-488b-822f-ea194951cfda">Second Company</option>
        <option value="1c21e613-a668-4817-bf6d-73befb8c9dbd">Test Company</option>
        </select>
    </p>

【问题讨论】:

  • 看来您正在尝试选择列表中的所有项目,对吗?你看过生成的 HTML 吗?
  • 是的。我试图通过删除我的选择标准来简化它,然后让它首先选择所有。将生成的html添加到原始帖子中。
  • 从您的 html 看来,所选属性似乎没有被呈现。因此,请检查您的 selectedList 值,它们可能未填充或不匹配。尝试为 selectedValued 做一个 List 看看它是否有效。
  • 我检查了 selectedList 中的 id 与呈现的 html 中的匹配。我转换为 List 仍然没有选择任何内容。

标签: c# asp.net-mvc multi-select


【解决方案1】:

我找到了解决方案。 ListBox 的名称必须与 MultiSelectList 不同。我在原始代码中重命名了 MultiSelectList,它可以工作。我什至不想开始考虑我在这方面花费了多少时间!

【讨论】:

  • 这对我来说也是一个非常令人沮丧的情况。尽管我的原始代码有一个不同的名称,但直到我给列表一个完全虚假的名称(即“stupidListBox”)并重新运行它才开始工作的代码。我随后返回并将列表重命名为更合适的名称;-)
  • 谢谢!我知道我以前遇到过这种情况,但忘记了这个愚蠢的“陷阱”......
【解决方案2】:

这是一个丑陋的解决方法。使用您想要选择的值设置您的 ViewData。

ViewData["Companies"] = new string[] { "guid-1", "guid-2" };

我仍在尝试调试,看看为什么会这样。令人惊讶的是,MVC 项目中此用例的单元测试运行良好。

【讨论】:

  • 谢谢,这行得通。如果你弄清楚了,请告诉我。我没有运气。
  • 我发现了这个问题。看我的回答。感谢您的帮助。
  • 啊,似乎帮助方法找到了公司的 ViewData 条目,因为它是空的,所以它没有将任何字段设置为选中状态。谢谢。
猜你喜欢
  • 2020-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多