c# - 在 MVC3 中处理创建和更新复杂数据类型的最佳方法是什么?

标签 c# asp.net asp.net-mvc-3 entity-framework ef-code-first

好吧,几天来我一直在试图找出最好的方法来做到这一点,但仍然没有想出一个非常优雅的答案,所以我希望有人能给我指出正确的方向或给出一些建议同行评审:)

基本上我有 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表单(包括PersonID) -> ajax保存到服务器,获取Place ID

填写事物表单(包括分隔字符串中的人员 ID地点 ID

我知道应该有一种更简单的方法来做到这一点,因为它有点笨重,但由于它的所有查询字符串我无法弄清楚

最佳答案

您说“有点笨重”,但我认为如果您可以使用 AJAX/JSON 在表单上实时构建对象图(可能针对 RESTful API),那么它往往会更轻量级,正如您所描述的那样。

另一种方法是使用脚本(jQuery、JSMVC、Knockout)来构建表单并立即发布整个表单。在某些情况下,在提交整个图表之前不应保留任何数据,我不得不这样做。这里的技巧是理解 ModelBinder 以及它如何为您构建/更新该图。

如果这就是您所问的问题,我可以详细阐述 ModelBinder 如何处理复杂对象图和集合的关键点。

关于c# - 在 MVC3 中处理创建和更新复杂数据类型的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8016062/

相关文章:

c# - 如何获得 Fry Graph 可读性公式的级别?

c# - 如何覆盖默认的未捕获异常对话框?

c# - 如何以更有效的方式编写排序?

c# - Web 配置中的连接字符串

asp.net - ASP 菜单在其容器 div 之外呈现

asp.net-mvc - 使用 Session 进行 Asp.net MVC3 长轮询

c# - 无法在开关 block 中使用只读字段的原因是什么?

c# - 将 double 转换为 int,它是四舍五入还是只是去掉数字?

c# - 在 c# mvc 中对单选按钮进行分组

c# - 使用 Fluent NHibernate 编写 MySql 数据库包装器