我想创建一个可以为类的所有属性生成隐藏字段的HtmlHelper。
在我的剃刀页面中,我将调用以下内容:
@Html.HiddenForObject(x=>x.SomeClass)
其中x是使用@model SomeOtherClass
定义的模型我的助手定义为=>>
public static MvcHtmlString HiddenForObject<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, TProperty>> expression)
现在有些类有一些我希望为其创建隐藏字段的公共属性。 但在这里我被困住了 我需要找到正确的代码来迭代我的表达式中的所有属性,获取这些属性的表达式,以便我可以调用
//Pseudo code
foreach(var propertyExpression in expression) {
@Html.HiddenFor(expression);
}
我尝试了一些东西,但基本上我没有想法。 非常感谢任何帮助。
答案 0 :(得分:0)
您可以在表达式上使用反射
foreach (var p in stage.GetType().GetProperties())
{
}
然而,如果你这样做可能会有相当大的性能影响,而且它可以打开一整套安全蠕虫,特别是如果你也使用你的类来访问数据库。
您可以扩展这个想法,并定义一些属性来标记隐藏的字段,并使用您的扩展方法来挑选它们。