Asp.net mvc 对象在过帐数据时为空

Asp.net mvc 对象在过帐数据时为空,asp.net-mvc,asp.net-mvc-5,Asp.net Mvc,Asp.net Mvc 5,在我的MVC5应用程序中,我基于这个模型创建了一个视图 Public int Id {get;set;} Public int Name{get;set;} Public int Ppt1{get;set;} Public int Ppt2{get;set;} Public MYClass2 Obj1 {get;set;} // These objects properties are displayed in view ( Not used for editting) Public MyC

在我的MVC5应用程序中,我基于这个模型创建了一个视图

Public int Id {get;set;}
Public int Name{get;set;}
Public int Ppt1{get;set;}
Public int Ppt2{get;set;}
Public MYClass2 Obj1 {get;set;} // These   objects properties are displayed in view ( Not used for editting)
Public MyClass3 Obj2 {get;set;}
我在控制器中的动作方法是

public ActionResult Create(int Project, int Licensee)
{
  MyModel obj=new MyModel();
  obj.Obj1=;//set the object
  obj.Obj2=;//set the object
  return view(obj);
}

[HttpPost]
public ActionResult Create(int Project, int Licensee,BorrowedTextItem model)
{
  //Here Values of Oj1 and Obj2 are null.? ANy idea why?
}
知道为什么在发布数据时obj1和obj2的值为空吗

知道为什么在发布数据时obj1和obj2的值为空吗

您仅使用
Html.DisplayFor
显示这些字段的值。没有相应的输入字段。因此,它们永远不会被发送到服务器

您可能需要添加相应的隐藏字段,以便在提交表单时将值发送到服务器:

@Html.HiddenFor(model => mode.Obj1.Foo)
@Html.HiddenFor(model => mode.Obj1.Bar)
...

或者更好,因为这些值不应该由用户修改,所以在提交表单时从后端检索它们会更好。在GET操作中,您从某处检索到了它们相应的值。在您的POST操作中,只需从同一位置检索它们。

您是否可以在负责发布数据的视图中添加表单请检查此链接使用
HiddenFor
来持久化Obj1和Obj2。我同意这一点。但就性能而言,这是一种好方法吗(在发布数据时再次获取数据)