代码之家  ›  专栏  ›  技术社区  ›  womp

为给定前缀引用字符串的子对象进行标识,如TryUpdateModel()所做的

  •  0
  • womp  · 技术社区  · 14 年前

    我有一个复杂的viewModel对象正在基控制器类中使用。为简单起见,如下所示:

    public class FruitBowl
    {
        public Apple[] apples;
        public Banana[] bananas;
    }
    
    public class Apple
    {
        public string appleType;
    }
    

    现在,如果我打电话的话 TryUpdateModel(myFruitBowlObj, "apples[0]") 模型绑定器将识别出它是数组中第一个应该从post数据更新的apple。或者,我可以将数据发布到我的控制器,在那里表单字段用方案“apples[0].appletype”命名,然后调用 TryUpdateModel(myFruitBowlObj) 它将正确更新第一个苹果。

    我的问题是-如果前缀字符串为“apple[0]”,那么从my水果Bowlobj获取对apple[0]的引用最简单的方法是什么?我可以跟随 TryUpdateModel() 是的,但它很复杂,使用了许多受保护的方法。是否有一些模型绑定逻辑可以访问我忽略的地方,或者是否需要通过反射手动进行?

    1 回复  |  直到 14 年前
        1
  •  1
  •   John Farrell    14 年前

    手动使用反射是最好的选择。

    我以前试过从模型绑定器中撕下一些片段,结果总是“好的,现在我需要这个,好的,现在我需要这个,好的,现在我需要这个”,最后我用一些手动反射方法解决了我的问题,从MVC源中撕下了大量的块。