使用ASP.NET MVC扩展方法 [英] Using Extension Methods in ASP.NET MVC
问题描述
我新的ASP.NET MVC。我继承了我想一起工作一个code基地。我有一个需要添加一些基本的HTML属性。目前,在我的.cshtml文件,有一个块是这样的:
I am new to ASP.NET MVC. I have inherited a code base that I am trying to work with. I have a need to add some basic HTML attributes. Currently, in my .cshtml file, there is a block like this:
@Html.DropDown(model => model.SomeValue, Model.SomeList)
这引用了 Extensions.cs
的功能。此功能如下所示:
This references a function in Extensions.cs
. This function looks like the following:
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
(这是一个布尔值)的值,以确定在下拉列表中是否不应该被启用。
I now have a case where I need to disable the drop down in some scenarios. I need to evaluate the value of Model.IsUnknown
(which is a bool) to determine whether or not the drop down list should be enabled or not.
我的问题是,我该如何禁用一个下拉列表,如果我需要?在这一点上,我不知道我是否需要更新我的.cshtml或扩展方法。
My question is, how do I disable a drop down list if I need to? At this point, I do not know if I need to update my .cshtml or the extension method.
感谢您为您提供任何指导。
Thank you for any guidance you can provide.
推荐答案
在您的扩展方法添加一个可选的参数禁用名为启用
和bydefaut这将是真正
并从该视图通布尔
参数来禁用或启用它:
Add an optional parameter in your extension method for disabling named enabled
and bydefaut it will be true
and from view pass bool
parameter to disable or enable it:
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扩展方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!