我在基本控制器类中使用了一个复杂的ViewModel对象。为简单起见,它看起来像这样:
public class FruitBowl
{
public Apple[] apples;
public Banana[] bananas;
}
public class Apple
{
public string appleType;
}
现在,如果我调用TryUpdateModel(myFruitBowlObj, "apples[0]")
,模型绑定器将识别它是数组中应该从POST数据更新的第一个苹果。或者,我可以将数据POST到我的控制器,其中表单字段以方案“apples [0] .appleType”命名,并且只需调用TryUpdateModel(myFruitBowlObj)
,它将正确更新第一个苹果。
我的问题是 - 给出前缀字符串“apple [0]”,从myFruitBowlObj获取对apple [0]的引用的最简单方法是什么?我可以按照TryUpdateModel()
这样做的方式,但它很复杂并且使用了许多受保护的方法。是否有一些模型绑定逻辑,我可以访问我忽略的某个地方,或者我是否需要通过反射手动完成?
答案 0 :(得分:1)
手动使用反射是最好的选择。
我之前尝试从模型活页夹中撕掉碎片,这总是“好吧,现在我需要这个,好吧,现在我需要这个,好吧,现在我需要这个”然后我最终撕掉了巨大的块在用一些手动反射方法解决我的问题之前,从MVC源出来。