自定义下拉列表html帮助器

时间:2015-08-05 15:06:31

标签: asp.net-mvc

我有一个在Web应用程序中使用的自定义控件,我想使用此自定义控件的逻辑为MVC助手创建html帮助器

这是我要转换的Web应用程序的代码:

 [ToolboxData("<{0}:CustDropDownList runat=server></{0}:CustDropDownList>")]
public class CustDropDownList : System.Web.UI.WebControls.DropDownList
{
    protected override void Render(HtmlTextWriter writer)
    {
        var strDivAttributes = this.Enabled ? "select-box" : "select-box disabled";
        writer.Write("<div id=\"{0}Div\" class=\"{1}\">", this.ClientID, strDivAttributes);
        base.Render(writer);
        writer.Write("</div>");
    }
}

1 个答案:

答案 0 :(得分:2)

您可以将扩展方法添加到HtmlHelper类中,如下所示:

public static MvcHtmlString CustDropDownList(this HtmlHelper htmlHelper)
{
    // ... your custom logic goes here
    return new MvcHtmlString.Create("<div>some HTML...</div>");
}

然后您可以从类似的视图中调用它:

@Html.CustDropDownList()

EDIT 如果你想将它用于模型属性,你需要这样的东西:

public static MvcHtmlString CustDropDownListFor<TModel, TValue>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TValue>> expression, object htmlAttributes)
{
    // ... your custom logic goes here
    return new MvcHtmlString.Create("<div>some HTML...</div>");
}

然后可以这样使用:

@Html.CustDropDownListFor(m => m.SomeProperty)