我正在使用应用程序中的一个功能,其中模型将是动态的,因为任何设置数据都可以显示,视图将根据他们点击的选项卡获取模型。我使用隐藏字段来存储设置名称,因为它们与模型名称相同。例如,如果tab1-> Settings1然后Model是Settings1 [已经存在于Model中]。所以我在View中使用@ model dynamic并使用@ Html.EditotForModel()根据模型绘制所需的UI。我的问题是当我在编辑上执行HttpPost当前我正在使用FormCollection来读取该页面上的数据当我在参数中声明模型名称时它会为我获取但我不知道哪个模型会返回通过隐藏变量,我需要它,因为模型验证因此问题而被破坏。任何帮助或反馈表示赞赏?如果需要,我可以提供更多细节?是否有人在此问题之前解决了这个问题?
答案 0 :(得分:0)
动力学可能是一件好事,也是一件坏事。在受控庄园中具有通用界面的模型上使用它们是最好的。
您可以查看以下不同选项: 1) 您是否尝试过让action方法接受动态类型?这可能是最简单的方法。
您可能必须设置一个强制转换助手,以根据隐藏字段将对象强制转换为正确的类型。
2) 我在一些代码中有类似的想法,但我创建了一个viewmetamodel类,其中包含我的所有类型作为可空属性。我的action方法接受此viewmetamodel类型并验证非null的属性。
与此一致,如果您的数据不是太大,那么您可以加载所有设置选项卡并使用Jquery在单击时应用选项卡。
3) 您还可以为每个选项卡创建@sections或使用EditorFor(c => c.settings)。这样每个选项卡都将加载一个类型安全对象。您需要为每个创建控制器。
我会说为您选择最简单的方法。我希望这至少能给你一些想法。