管理非常复杂的模型的最佳方法是什么?

时间:2016-03-31 22:19:13

标签: asp.net-mvc asp.net-mvc-4 model

我有以下实体,我在asp.net mvc应用程序中用作模型

public class USERS{
      public int PK { get; set; } // Primary key
      public string Username { get; set; }
      public string Password { get; set; }
      public int FK_PEOPLE { get; set; } //Foreign key to table PEOPLE
      public PEOPLE Person { get; set; } // The very PEOPLE property  
      ...10-15 additional fields, including List<SomeEntity>, etc.
}

这是班级人物

public class PEOPLE{
       public int PK { get; set; } // Primary key
       public string Name { get; set; }
       public string Surname { get; set; } 
}

当我将USERS对象发送到我的View时,我获得了所有数据,并在表单中显示所有内容。一切安好。我可以看到所有的数据。为了使事情变得更加花哨,我在Partial View中显示了PEOPLE属性。

当我在HttpPost Action中取回模型时出现问题。我管理(使用HiddenFor)获取USERS.PK和USERS.FK_PEOPLE但USERS.Person实体始终为null。

我试过[Bind(Prefix =“USERS”)],但没有用。即使像这样的溶剂有效,我是否应该为我的模型中的每一个属性执行此操作?我是否真的必须手动修复每个属性的所有绑定?这将需要永远..必须有一个更好的方法来完成我的模型,至少我在HttpGet行动中发送它..

感谢Gratefull为我提供所有帮助:)

PS:我知道,模型绑定有很多线程,但我认为我没有绑定问题。我想找到一种“避免”绑定的方法。

1 个答案:

答案 0 :(得分:0)

归功于@StephenMuecke

我使用的是PartialView错误。溶剂是用它作为EditorTemplate。 所以,这有效:

    <div class="form-group">
        @Html.EditorFor(m => m.PERSON)
    </div>

这不起作用:

    <div class="form-group">
        @{ Html.RenderPartial("~/Views/PartialViews/Person/Index.cshtml", Model.PERSON); }
    </div>

最后,我所要做的就是将我的PartialView重命名为PERSON.cshtml并将其移动到〜/ Views / Shared / EditorTemplates /

非常感谢!