【问题标题】:How can I get a property dynamically in a model using c#如何使用 C# 在模型中动态获取属性
【发布时间】:2018-05-12 21:45:03
【问题描述】:

如何在 c# 中动态获取这样的属性

 @LabelFor(m => m.GetType().GetProperty("Property1"))
 @LabelFor(m => m.GetType().GetProperty("Property2"))

【问题讨论】:

  • 你试图用这个结构解决什么问题?您需要为您的问题提供更多信息,以便人们真正帮助您。

标签: c# dynamic properties model


【解决方案1】:

试试这个:

public class PropOf<T>
{
    public static string Property<TProp>(Expression<Func<T, TProp>> expression)
    {
        var body = expression.Body as MemberExpression;
        if (body == null)
            throw new ArgumentException("'expression' should be a member expression");
        return body.Member.Name;
    }
}

用法:

@LabelFor(m => m.GetType().GetProperty(PropOfYourModelOrClassName>.Property(x => x.Property1)))

【讨论】:

  • “动态”如何 - 原始帖子暗示该属性在编译时未知。如果该属性在编译时已知,则可以执行 @LabelFor(m =&gt; m.Property1)
  • 是的,你是对的。但是,他的问题是“如何在 c# 中动态获取属性”......上面的用法只是使用它的一个示例,并没有解决任何与剃刀代码相关的问题。只是无法要求他提供有关他的问题的更多详细信息,因为我昨天刚刚注册并且无法从问题中发布 cmets。 :)
  • 真正的问题是我需要创建一个视图但我不想写每个属性。
【解决方案2】:

我想改变这个:

@Html.TextBoxFor(model => model.Prop1)
@Html.TextBoxFor(model => model.Prop2)
....
@Html.TextBoxFor(model => model.Propn)

到这里:

for (var prop in {"Prop1","Prop2", ... , "Propn"})

@Html.TextBoxFor(model => model.GetType().GetProperty(prop))

【讨论】:

    【解决方案3】:

    试试这个。

    foreach (var prop in model.GetType().GetProperties())
    {
        @Html.TextBoxFor(model => model.GetType().GetProperty(prop.Name))
    }
    

    没有测试。希望能帮助到你。 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-15
      • 2015-10-26
      • 1970-01-01
      • 1970-01-01
      • 2011-09-01
      • 2014-05-04
      • 2012-10-27
      • 2017-05-27
      相关资源
      最近更新 更多