在 ASP.NET MVC 中使用扩展方法
Using Extension Methods in ASP.NET MVC
我是 ASP.NET MVC 的新手。我继承了一个我正在尝试使用的代码库。我需要添加一些基本的 HTML 属性。目前,在我的 .cshtml 文件中,有一个这样的块:
@Html.DropDown(model => model.SomeValue, Model.SomeList)
这引用了 Extensions.cs
中的函数。此函数如下所示:
public static MvcHtmlString DropDown<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, IEnumerable<string> items, string classes = "form-control")
{
var attributes = new Dictionary<string, object>();
attributes.Add("class", classes);
return System.Web.Mvc.Html.SelectExtensions.DropDownListFor(html, expression, itemList.Select(x => new SelectListItem() { Text = x.ToString(), Value = x.ToString() }), null, attributes);
}
我现在有一个案例,我需要在某些情况下禁用下拉菜单。我需要评估 Model.IsUnknown
的值(这是一个布尔值)以确定是否应启用下拉列表。
我的问题是,如果需要,如何禁用下拉列表?此时,我不知道是否需要更新我的.cshtml 或扩展方法。
感谢您提供的任何指导。
在您的扩展方法中添加一个可选参数以禁用名为 enabled
并且默认情况下它将是 true
并从视图中传递 bool
参数来禁用或启用它:
public static MvcHtmlString DropDown<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, IEnumerable<string> items, string classes = "form-control",bool enabled=true)
{
var attributes = new Dictionary<string, object>();
attributes.Add("class", classes);
if(!enabled)
attributes.Add("disabled","disabled");
return System.Web.Mvc.Html.SelectExtensions.DropDownListFor(html, expression, itemList.Select(x => new SelectListItem() { Text = x.ToString(), Value = x.ToString() }), null, attributes);
}
现在在视图中:
@Html.DropDown(model => model.SomeValue, Model.SomeList,enabled:false)
我是 ASP.NET MVC 的新手。我继承了一个我正在尝试使用的代码库。我需要添加一些基本的 HTML 属性。目前,在我的 .cshtml 文件中,有一个这样的块:
@Html.DropDown(model => model.SomeValue, Model.SomeList)
这引用了 Extensions.cs
中的函数。此函数如下所示:
public static MvcHtmlString DropDown<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, IEnumerable<string> items, string classes = "form-control")
{
var attributes = new Dictionary<string, object>();
attributes.Add("class", classes);
return System.Web.Mvc.Html.SelectExtensions.DropDownListFor(html, expression, itemList.Select(x => new SelectListItem() { Text = x.ToString(), Value = x.ToString() }), null, attributes);
}
我现在有一个案例,我需要在某些情况下禁用下拉菜单。我需要评估 Model.IsUnknown
的值(这是一个布尔值)以确定是否应启用下拉列表。
我的问题是,如果需要,如何禁用下拉列表?此时,我不知道是否需要更新我的.cshtml 或扩展方法。
感谢您提供的任何指导。
在您的扩展方法中添加一个可选参数以禁用名为 enabled
并且默认情况下它将是 true
并从视图中传递 bool
参数来禁用或启用它:
public static MvcHtmlString DropDown<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, IEnumerable<string> items, string classes = "form-control",bool enabled=true)
{
var attributes = new Dictionary<string, object>();
attributes.Add("class", classes);
if(!enabled)
attributes.Add("disabled","disabled");
return System.Web.Mvc.Html.SelectExtensions.DropDownListFor(html, expression, itemList.Select(x => new SelectListItem() { Text = x.ToString(), Value = x.ToString() }), null, attributes);
}
现在在视图中:
@Html.DropDown(model => model.SomeValue, Model.SomeList,enabled:false)