gpt4 book ai didi

asp.net-mvc - 在 ListBoxFor 中选择值的挑战

转载 作者:行者123 更新时间:2023-12-03 06:21:06 25 4
gpt4 key购买 nike

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

Controller :

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

查看:

<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 会正确选择。

我读到this post在 ASP.Net 和 this thread就这样,但没有快乐。事实上,如果我将重写 ToString() 添加到我的 HelpDeskCall 类(如 ASP.net 线程中的建议),则所有值都会被选中,这也是不对的。

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

最佳答案

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

型号:

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

Controller :

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

查看:

<%: Html.ListBoxFor(x => x.SelectedItemIds, Model.Items) %>

关于asp.net-mvc - 在 ListBoxFor 中选择值的挑战,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3194143/

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