我在一个新项目中使用 Bootstrap 5,并且不想手动编写表单部分的所有基础结构,因此决定创建一个包装器以自动执行该操作。
我已经使用了以下语法来创建文本框(textboxfor)、文本域(textareafor)和下拉列表(dropdownlist):
public static MvcHtmlString MyTextBoxFor<TModel, TProperty>(
this HtmlHelper<TModel> helper,
Expression<Func<TModel, TProperty>> expression)
{
var stringbuilder = new MvcHtmlString("<div class='form-group'>" +
helper.LabelFor(expression, new {@class = "col-sm-3 control-label"}) +
"<div class='col-sm-5'>" +
helper.TextBoxFor(expression, new {@class = "form-control"}) +
"</div>" +
"</div>");
return stringbuilder;
}
然后可以按照以下方式进行调用:
@FormHelpers.MyTextBoxFor(Html, x => x.Name)
但是,对于checkboxfor,似乎无法正常工作:
Error 1 'System.Web.Mvc.HtmlHelper<TModel>'中不包含定义为'CheckBoxFor'的内容,而最佳扩展方法重载'System.Web.Mvc.Html.InputExtensions.CheckBoxFor<TModel>(System.Web.Mvc.HtmlHelper<TModel>, System.Linq.Expressions.Expression<System.Func<TModel,bool>>)'具有一些无效参数
如果我将TProperty
更改为bool
,则会编译,但我在调用此助手的行上获得运行时错误:
CS0411:无法从使用中推断出方法'CollectionSystem.Helpers.FormHelpers.MyCheckboxFor<TModel,TProperty>(System.Web.Mvc.HtmlHelper<TModel>, System.Linq.Expressions.Expression<System.Func<TModel,bool>>)'的类型参数。尝试明确指定类型参数。
请问有人能够建议我如何包装CheckboxFor函数吗?