使用ASP.NET MVC扩展方法 [英] Using Extension Methods in ASP.NET MVC

查看:328
本文介绍了使用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 enabledand 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆