gpt4 book ai didi

c# - 带有集合的模型 - Html.ListBoxFor 未设置选定项

转载 作者:太空宇宙 更新时间:2023-11-03 18:06:43 26 4
gpt4 key购买 nike

这让我发疯了,在我失去理智之前请帮忙。

问题总结:
我的模型“线程”有“论坛消息”的集合,每个论坛消息都有一个多选下拉列表。我要做的就是根据来自数据库的值设置选定的值。我已经通过了很多线程,但无法找到解决方案。

如果您知道任何此类问题,请告诉我,我会通过它们。

下面是我的模型

public class Thread
{
public List<ForumMessage> Messages { get; set; }
//Master list coming from DB
public List<Classifications> AllClassifications { get; set; }
public string Subject { get; set; }
public int[] ThreadSelectedClassifications { get; set; }
}

public class ForumMessage
{
public string MessageName { get; set; }
public int[] SelectedClassifications { get; set; }
}

public class Classifications
{
public int ID { get; set; }
public string Title { get; set; }
public string Description { get; set; }
}

下面是我的 Controller
public ActionResult Index()
{
var thread = new Thread();
thread.Messages = new List<ForumMessage>();

thread.AllClassifications = new List<Classifications>()
{
new Classifications { ID = 1, Title = "One" , Description = "One" },
new Classifications { ID = 2, Title = "Two" , Description = "Two" },
new Classifications { ID = 3, Title = "Three" , Description = "Three" },
new Classifications { ID = 4, Title = "Four" , Description = "Four" },
new Classifications { ID = 5, Title = "Five" , Description = "Five" }
};
thread.ThreadSelectedClassifications = new int[] { 2, 4 };
for (int i = 0; i < 5; i++)
{
var post = new ForumMessage();
post.SelectedClassifications = new int[] { 2, 4 };
post.MessageName = i.ToString();
thread.Messages.Add(post);
}

return View(thread);

下面是我的看法
@model MultiSelectDemo.Controllers.Thread
@foreach (var item in Model.Messages)
{
<div class="row">
<div class="col-md-4">
@*@Doesn't set the items selected *@
@Html.ListBoxFor(m => item.SelectedClassifications, new SelectList(Model.AllClassifications, "ID", "Title"));
</div>

<div class="col-md-4">
@* Doesn't set the items selected *@
@Html.ListBoxFor(m => item.SelectedClassifications, new SelectList(Model.AllClassifications, "ID", "Title", item.SelectedClassifications));
</div>
<div class="col-md-4">
@* Doesn't set the items selected *@
@Html.DropDownListFor(m => item.SelectedClassifications, new SelectList(Model.AllClassifications, "ID", "Title", item.SelectedClassifications), new { @multiple = "multiple" })
</div>
</div>
}
<hr />
<div class="row">
<div class="col-md-12">
This works.
@Html.ListBoxFor(m => m.ThreadSelectedClassifications, new MultiSelectList(Model.AllClassifications, "ID", "Title"))
</div>
</div>

Sample Output }

最佳答案

SelectList仅支持单个选定值,因此在您的代码示例中,您告诉它将选定值设置为具有整个选定值列表的值的选项。由于不存在此类选项,因此未选择任何内容。
MultiSelectList另一方面,允许传递选定值的可枚举。如果你使用正确的类,你会没事的。

@Html.ListBoxFor(m => item.SelectedClassifications, new MultiSelectList(Model.AllClassifications, "ID", "Title", item.SelectedClassifications))

关于c# - 带有集合的模型 - Html.ListBoxFor 未设置选定项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27237683/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com