我已经为mvc和c#项目中的文本框和下拉列表编写了htmlhelper扩展方法,目前我使用的是Kendo UI,并使用了Kendo为Dropdownlist和Textbox提供的控件。
我尝试过使用与MVC相同的方法
public static MvcHtmlString Custom_DropDownList(this HtmlHelper helper, string name, IEnumerable<SelectListItem> list)
{
return Custom_DropDownList(helper, name, list);
}
但我无法使用kendo下拉列表显示上述帮助方法。我知道,这是错误的,我一直在努力。
我正在填充数据库中的下拉值以及列表中的当前值, 我想
在列表顶部添加一个空白行
或(ALL)选项位于列表顶部(当有多个值时),
(ALL)。
如果有人在剑道中实施了下拉助手方法,请求分享这个想法或建议我解决这个问题。
修改
使用自定义htmlhelper作为普通下拉列表,我们确实喜欢这个
public static MvcHtmlString StateDropDownList(this HtmlHelper html)
{
return html.TextBox("foo");
}
然后我们可以在代码中使用这个htmlhelper。
如何为Kendo()。DropDownList()实现相同的代码,因为我没有看到任何这样做的例子,我也不知道,Kendo dropdownlist如何在内部解析html。我尝试做类似下面的事情,但我找不到解决方案
public static MvcHtmlString Custom_DropdownList(this HtmlHelper helper, string name, IEnumerable<SelectListItem> list, string option, object htmlAttributes)
{
var divTag = new TagBuilder("div");
divTag.AddCssClass("k-list-container k-popup k-group k-reset");
divTag.Attributes.Add("id", "ddlMemType-list");
divTag.Attributes.Add("data-role", "popup");
divTag.Attributes.Add("style", "position: absolute; height: auto; display: none;");
TagBuilder ulTag = new TagBuilder("ul");
ulTag.Attributes.Add("id", "ddlMemType_listbox");
ulTag.MergeAttribute("unselectable", "on");
ulTag.AddCssClass("k-list k-reset");
ulTag.MergeAttribute("tabindex", "-1");
ulTag.MergeAttribute("role", "listbox");
ulTag.MergeAttribute("aria-hidden", "false");
ulTag.MergeAttribute("aria-live", "off");
ulTag.MergeAttribute("style","overflow: auto;");
ulTag.InnerHtml += Environment.NewLine;
foreach (var item in list)
{
var liTag = new TagBuilder("li");
liTag.MergeAttribute("tabindex", "-1");
liTag.MergeAttribute("role", "option");
liTag.MergeAttribute("unselectable", "on");
liTag.AddCssClass("k-item k-state-selected k-state-focused");
liTag.Attributes.Add("id", "ddlMemType_option_selected");
liTag.MergeAttribute("aria-selected", "true");
ulTag.InnerHtml += string.Format(" {0}{1}{2}", liTag.ToString(), item.Text, Environment.NewLine);
}
divTag.InnerHtml += string.Format("{0}{1}", ulTag.ToString(), Environment.NewLine);
return MvcHtmlString.Create(divTag.ToString(TagRenderMode.Normal));
}
答案 0 :(得分:0)
尽管这是一个古老的问题,但这个答案可能会有用:
public static MvcHtmlString StateDropDownList(this HtmlHelper html)
{
if ( <textbox display condition>)
return html.TextBox("foo");
else
return html.DropDownList("ddlId", selectList, htmlAttributes)
}
For this you just need to write below in Script part of .cshtml
<script type="text/javascript">
$("ddlId").kendoDropDownList();
</script>