- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
最近在开发我的第一个 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/
如何填充 ASP.NET MVC 列表框?使其不可选择?我如何从列表框中删除所选项目 最佳答案 您想要一个不可选择的选择吗? m.Choices, Mo
如何给下面的ListBox添加下面的样式, @Html.ListBoxFor(m => m.AvailableProducts, new MultiSelectList(Model.Available
当我运行代码时,我一次只能选择一个项目,这很奇怪,因为“ListBoxFor()”用于选择多个项目,所以我想要的是: 选择多个项目 View (索引.cshtml): @Html.ListB
我在一个可以多选的列表框中有一个包含 40 个结果的列表,但我想将选择的数量限制为某个特定数量,比如说 5。在 C# MVC 中,我有: @Html.ListBoxFor(model => mode
我有一个手机配件列表,列表中的条目是其 Material 编号和名称的组合 - 有时它会变长并超过列表框的宽度。 (Html.ListBoxFor) 我已经决定向其添加水平滚动,但通过添加溢出,首先尝
我的 View 中有一个包含列表框的表单。用户将值添加到列表框。 当用户按下“提交”按钮时,我希望列表框中的所有值都放在我的模型属性中,这是一个列表。 这是我认为的列表框: @Html.ListBo
这让我发疯了,在我失去理智之前请帮忙。 问题总结: 我的模型“线程”有“论坛消息”的集合,每个论坛消息都有一个多选下拉列表。我要做的就是根据来自数据库的值设置选定的值。我已经通过了很多线程,但无法找到
我正在尝试为绑定(bind)到模型属性的控件设置一个列表框。我可以正确填充列表框,但在进行选择后,应包含所选项目的列表始终为空。我究竟做错了什么?我花了几个小时改变并尝试不同的东西,但仍然不起作用。
我知道这个问题已经被问到了相当多的问题。 here 和 here 但我仍然无法弄清楚问题所在。 我正在开发一个博客来自学 MVC 框架。现在,当我发布下面的 View 时,ListBoxFor 助手不
最近在开发我的第一个 ASP.Net MVC2 Web 应用程序时,当我需要在列表框中选择多个值时,我遇到了一些问题。我用一些 jQuery 解决了这个问题,但继续编写了一些非常简单的代码来演示。我使
我非常困惑,因为这看起来应该很简单,但我无法让我的 ListBox 填充选定的值。我查看了其他几个答案,但我不知道我做错了什么。 这是我的模型: public class ItemViewModel
我正在构建一个非常简单的表单来编辑对象的属性。其中一个属性是与其关联的其他对象的列表,因此我使用的是双列表系统:左侧是当前关联对象的列表,右侧是可用对象的列表加上;下面的添加和删除按钮将相关操作应用于
我能够在 ListBoxFor 控件中显示从 Controller 到 View 的值。但是,当我将值从一个列表框移动到另一个列表框并发布 View 时, Controller 端的模型不会保留列表框
我正在尝试填充一个列表框。我的模型只是一个列表。我找不到需要与 @Html.ListBoxFor() 一起使用的参数的简单说明。 这是我的部分代码: public ActionResult Index
我正在使用最新的MVC5。 我想使用列表框而不是下拉菜单。使用哪个控件的决定不是单选/多选决定。 这就是我得到的错误: An exception of type 'System.InvalidOper
我在提交表单后尝试获取自己的 View 模型,但出现以下错误:“无法将类型为‘System.String[]’的对象转换为类型‘System.String’” 这是我的代码: View 模式: pub
我有一个 MVC View ,它使用下面的 Razor 语法呈现基本上等同于 KeyValuePair 的内容,然后生成以下 HTML。 @Html.DropDownListFor(x => x.Se
当我将 "model => model.id" 更改为 "model => model.Supplierid" 时出现以下错误 "The parameter 'expression' must eva
Controller 获取操作 IList inputVoltagesList = unitOfWorkPds.InputVoltageRepository.GetAll.ToList(); pdsE
我在使用帮助程序 Html.ListBoxFor() 时遇到问题。 这是我的 View 模型: public class NewReservation { public SelectList
我是一名优秀的程序员,十分优秀!