当前位置: 首页 > 编程语言 > C#

如何从对象列表创建MVCHtmlHelper表Share

时间:2023-04-10 21:40:01 C#

如何从对象列表创建MVCHtmlHelper表.获取领域对象列表我想显示一个表格,该表格在使用领域对象的属性作为列时更加智能。另外,我想禁止某些属性显示为列。一种想法是用一个属性来装饰属性,告诉它不要显示。希望这是有道理的,但到目前为阻止我到达的地方……publicstaticstringMyTable(thisHtmlHelperhelper,stringname,IListitems,objecttableAttributes){if(items==null||items.Count==0)返回String.Empty;StringBuildersb=newStringBuilder();BuildTableHeader(sb,items[0].GetType());//TODO:待实现...//foreach(variinitems)//BuildMyObjectTableRow(sb,i);TagBuilder构建器=newTagBuilder("table");builder.MergeAttributes(新RouteValueDictionary(tableAttributes));builder.MergeAttribute("名称",名称);builder.InnerHtml=sb.ToString();返回builder.ToString(TagRenderMode.Normal);}privatestaticvoidBuildTableHeader(StringBuildersb,Typep){sb.AppendLine("");//一些这里如何确定是否应该显示此属性的信息//这可能来自属性foreach上定义的属性(p.GetProperties()中的var属性)sb.AppendFormat("{0}",property.姓名);sb.AppendLine("");}//做点什么就好了像下面这样确定//应该在表中显示什么对这个想法或任何替代方案有任何意见/建议吗?到目前为止看起来不错,但GilFink可能已经为您完成了这项工作:http://blogs.microsoft.co.il/blogs/gilf/archive/2009/01/13/extending-asp-net-mvc-HtmlHelper-class.aspx我强烈推荐使用MvcContrib的Grid如果你决定不这样做,至少看看他们是如何解决表格生成界面的。经过大约一个小时的工作,我能够创造出我想要的东西。我的解决方案是在域对象类上创建一个属性,指定哪些属性在我的表中可见。基于MVC1.0中的BindAttribute属性(查看源代码),我创建了一个TableProperty属性。[AttributeUsage(AttributeTargets.Class,AllowMultiple=false,Inherited=true)]publicclassTableProperty:Attribute{privatestringm_include;私有字符串[]m_includeSplit;publicTableProperty(){m_includeSplit=newstring[0];get{return(m_include??string.Empty);}设置{m_include=值;m_includeSplit=value.Split(',');}}publicboolIsPropertyAllowed(stringpropertyName){returnIsPropertyAllowed(propertyName,m_includeSplit);}internalstaticboolIsPropertyAllowed(stringpropertyName,string[]includeProperties){返回((includeProperties==null)||(includeProperties.Length==0))||includeProperties.Contains(propertyName,StringComparer.OrdinalIgnoreCase);这允许我用这个属性装饰我的域对象...[TableProperty(Include="Property1,Property2,Property3")]publicpartialclassMyObject{...然后在BuildTableHeader中我使用反射来获取对象的属性并将每个属性与允许的列表相匹配。privatestaticvoidBuildTableHeader(StringBuildersb,Typep){sb.AppendLine("");TablePropertytp=p.GetCustomAttributes(typeof(TableProperty),true)[0];foreach(varpropertyinp.GetProperties())if(tp.IsPropertyAllowed(property.Name))sb.AppendFormat("{0}",property.Name);请注意,此解决方案在我的小应用程序中对我有用,但将更多地关注MvcContrib的网格以实现更好的实现。以上是C#学习教程:HowtocreateanMVCHtmlHelpertablefromtheobjectlist。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。涉及侵权,请点击维权联系管理员删除。如需转载请注明出处: