如何定义封装Kendo HtmlAttributes的自定义扩展方法,仅在指定条件下调用?
自定义Kendo RadioGroup的条件HtmlAttributes扩展方法
步骤1:创建扩展方法类
在项目中新建一个静态类(比如命名为KendoExtensions.cs),编写针对RadioGroupBuilder<T>的扩展方法:
using Kendo.Mvc.UI; using System.Web.Mvc; public static class KendoExtensions { // 针对RadioGroup的条件HtmlAttributes扩展方法 public static RadioGroupBuilder<T> ConditionalHtmlAttributes<T>( this RadioGroupBuilder<T> builder, bool isRequired, object htmlAttributes) { if (isRequired) { builder.HtmlAttributes(htmlAttributes); } return builder; } }
步骤2:在视图中引用命名空间
确保视图顶部引用了扩展方法所在的命名空间(如果类在项目根命名空间下可忽略此步骤):
@using YourProjectNamespace.KendoExtensions
步骤3:修改原RadioGroupFor代码
将原本直接调用.HtmlAttributes(...)的逻辑替换为自定义扩展方法,传入@item.isRequired作为判断条件:
@(Html.Kendo().RadioGroupFor(m => m.MeetingPollingQuestions) .Name(string.Format("PollingResponses[{0}].Value", idx)) .ConditionalHtmlAttributes(@item.isRequired, new { required = "required", data_val_required = "Question is Required" }) .Items(i=> { foreach (var option in @item.RadioButtonList) i.Add().Label(option.Label).Value(option.Value); }) .Value("Value") )
补充说明
- 如果需要更灵活的属性配置,可将方法参数
object htmlAttributes改为IDictionary<string, object>类型,支持动态构建属性集合。 - 扩展方法必须定义在静态类的静态方法中,且第一个参数携带
this关键字,才能被识别为目标类型的扩展方法。
内容的提问来源于stack exchange,提问作者Jefferson
相关产品推荐
相关产品推荐

