好吧,几天来我一直在试图找出最好的方法来做到这一点,但仍然没有想出一个非常优雅的答案,所以我希望有人能给我指出正确的方向或给出一些建议同行评审:)
基本上我有 3 个类(它们是不同的并且比这些复杂得多):
public class Person
{
int ID { get; set;}
string Name { get; set; }
virtual IEnumerable<Place> { get; set; }
}
public class Place
{
int ID { get; set;}
string Name { get; set; }
virtual IEnumerable<Thing> { get; set; }
}
public class Thing
{
int ID { get; set;}
string Name { get; set; }
virtual IEnumerable<Place> { get; set; }
virtual int PersonID { get; set; }
}
所以基本上你有Person
,他们有许多Place
,其中可以有许多Thing
,它们也可以出现在多个Places
(试图减少存储 Thing
的重复项),但仅限于该 Person
设置 ViewModel 来处理此问题的最佳方法是什么?我应该使用 Ajax 和 Json 自己创建所有内容(我一直在做的事情),还是有办法在 ViewModel 中处理这种类型的关系并单个回发到服务器?
目前我正在执行以下操作:
填写Person
表单 -> ajax保存到服务器,获取Person ID
填写Place
表单(包括Person
的ID
) -> ajax保存到服务器,获取Place ID
填写事物
表单(包括分隔字符串中的人员 ID
和地点 ID
我知道应该有一种更简单的方法来做到这一点,因为它有点笨重,但由于它的所有查询字符串我无法弄清楚
最佳答案
您说“有点笨重”,但我认为如果您可以使用 AJAX/JSON 在表单上实时构建对象图(可能针对 RESTful API),那么它往往会更轻量级,正如您所描述的那样。
另一种方法是使用脚本(jQuery、JSMVC、Knockout)来构建表单并立即发布整个表单。在某些情况下,在提交整个图表之前不应保留任何数据,我不得不这样做。这里的技巧是理解 ModelBinder 以及它如何为您构建/更新该图。
如果这就是您所问的问题,我可以详细阐述 ModelBinder 如何处理复杂对象图和集合的关键点。
关于c# - 在 MVC3 中处理创建和更新复杂数据类型的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8016062/