Mar*_*ark 26 asp.net-mvc html-helper
我没有看到一个方法来创建,通过HtmlHelper,一个SelectListItem是会吐出下面的HTML:
<option disabled="disabled">don't click this</option>
Run Code Online (Sandbox Code Playgroud)
唯一的属性SelectListItem是:
new SelectListItem{
Name = "don't click this",
Value = string.Empty,
Selected = false
}
Run Code Online (Sandbox Code Playgroud)
我看到的唯一选择是
SelectListItem以添加Enabled属性以获取视图的值HtmlHelper接受我的新扩展EnablableSelectList并添加我的disabled属性的新扩展.Mih*_*üür 23
Disabled自ASP.NET MVC 5.2以来,该属性受支持:
new SelectListItem {
// ...
Disabled = true
}
Run Code Online (Sandbox Code Playgroud)
请参阅API参考.
Jab*_*Jab 20
在完全重新创建帮助程序之前,我可能会尝试这种方法.基本的想法是你从帮助程序得到的Html应该很好地形成,所以它应该是安全的解析.因此,您可以通过创建使用现有扩展的自己的扩展来增加该想法,但添加了禁用项目的功能.
这样的事可能会做(完全未经测试)
public class CustomSelectItem : SelectListItem
{
public bool Enabled { get; set; }
}
public static class CustomHtmlHelpers
{
public static MvcHtmlString MyDropDownList(this HtmlHelper html, IEnumerable<CustomSelectItem> selectList)
{
var selectDoc = XDocument.Parse(html.DropDownList("", (IEnumerable<SelectListItem>)selectList).ToString());
var options = from XElement el in selectDoc.Element("select").Descendants()
select el;
foreach (var item in options)
{
var itemValue = item.Attribute("value");
if (!selectList.Where(x => x.Value == itemValue.Value).Single().Enabled)
item.SetAttributeValue("disabled", "disabled");
}
// rebuild the control, resetting the options with the ones you modified
selectDoc.Root.ReplaceNodes(options.ToArray());
return MvcHtmlString.Create(selectDoc.ToString());
}
}
Run Code Online (Sandbox Code Playgroud)
Clientside选项:例如,如果你给你的下拉列表一个类'custom'和那些应该是不可选择的项值-1(例如),那么你可以这样做:
$('select.custom option[value=-1]').each(function () {
$(this).attr("disabled", "disabled");
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20341 次 |
| 最近记录: |