我有一个问题,我经常处理使用MVC,我似乎无法找到一个简单的解决方案。
我经常发现自己为一个拥有较小对象集合的对象创建了一个viewmodel。
例如,
我创建了一个Staff屏幕,用户将一名工作人员添加到数据库中。 大部分内容都相当直接,但我需要能够添加凭据。
员工可以拥有的凭证数量是动态的,因此第二个表中包含引用员工的外键以及相应的凭据数据。
所以我的viewmodel有一个Staff对象和一个IEnumerable的Credential对象。
目前,当用户在partialview表单中添加/编辑人员时,会出现带有凭据字段的弹出窗口。保存凭证时,我使用javascript字符串手动生成每个属性的隐藏字段作为隐藏的html元素,然后将其附加到适当的位置。它变得非常难以管理。
var hid0 = "<input name=CurrentCredentials.Index type=hidden value='i-" + statid + "'>";
var hid1 = "<input name=CurrentCredentials[i-" + statid + "].StatID id='credentials-statid-" + statid + "' type=hidden value='" + statid + "'>";
...等到hid7。我还生成一系列标签来显示页面上的数据。绝对一团糟。
它目前有效,但必须有一个更好的方法,我即将处理一个非常类似的问题。我觉得我正在重新发明轮子。 我的第一直觉是添加嵌套表单,但我的研究告诉我MVC禁止这样做,所以这是不可能的。
总结我正在寻找的东西: 如何在局部视图中动态加载/保存对象,而不会丢失HTTPPOST上的数据?