- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在MVC3中,我想更改Html.ListBoxFor方法的HTML输出,以便代替所有具有所有可用值(并且选中的值突出显示)的HTML列表框,我只想输出无序列表(UL,LI)而不是SELECT元素。问题是我想让与ListBoxFor方法完全相同,方法签名也接受MultiSelectList对象和一个List,这些List是选定的值。然后,我希望无序列表仅将选定的项目值(而不是键)输出为UL / LI html。这是我想要的方法签名。如何做到这一点?
public static MvcHtmlString ListBoxForAsUnorderedList <TModel, TProperty>
(this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, TProperty>> expression,
IEnumerable<SelectListItem> selectList)
最佳答案
我想出了这个,下面的代码可以帮助其他人。基本上,我将参数传递给通用的ListBox方法,取回生成的原始HTML,然后使用Linq to XML将仅“选定”的值捕获到字符串数组中。然后,我遍历字符串数组,并使用TagBuilder(“ul”)生成列表。我对使用此方法的任何评论或批评持开放态度。
public static MvcHtmlString ListBoxForAsUnorderedList<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, IEnumerable<SelectListItem> selectList)
{
var mvcHtmlString = System.Web.Mvc.Html.SelectExtensions.ListBox(htmlHelper, ExpressionHelper.GetExpressionText(expression), selectList, null);
var selectedValues = XDocument.Parse(mvcHtmlString.ToHtmlString()).Descendants("option").Where(e => (string)e.Attribute("selected") == "selected").Select(e => e.Value).ToArray();
var tag = new TagBuilder("ul");
foreach (var value in selectedValues)
{
var itemTag = new TagBuilder("li");
itemTag.SetInnerText(value);
tag.InnerHtml += itemTag.ToString();
}
return new MvcHtmlString(tag.ToString());
}
关于asp.net-mvc - MVC方法从ListBoxFor方法输出无序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8579789/
如何填充 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
我是一名优秀的程序员,十分优秀!