Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在EF MVC中发布和捕获具有父对象和子对象列表的视图模型?_C#_Asp.net Mvc_Entity Framework_Asp.net Mvc 4_Razor - Fatal编程技术网

C# 如何在EF MVC中发布和捕获具有父对象和子对象列表的视图模型?

C# 如何在EF MVC中发布和捕获具有父对象和子对象列表的视图模型?,c#,asp.net-mvc,entity-framework,asp.net-mvc-4,razor,C#,Asp.net Mvc,Entity Framework,Asp.net Mvc 4,Razor,我想添加一个家庭,它有许多成员,并且可以有许多房子。我正在尝试制作一个表单,并将对象族与其他对象的集合一起提交。我尝试了一些方法,但我只能将一个对象传递给控制器,而不能传递给集合。我能做什么? 我是否应该创建成员和房屋部分视图并在视图中渲染它们?? 有没有办法收集JavaScript中的所有内容,然后将整个家族对象传递给控制器 我正在使用带有实体框架的MVC5。我无法解决这个问题。感谢您的帮助 下面是一个对象的示例 public class family { public int id

我想添加一个家庭,它有许多成员,并且可以有许多房子。我正在尝试制作一个表单,并将对象族与其他对象的集合一起提交。我尝试了一些方法,但我只能将一个对象传递给控制器,而不能传递给集合。我能做什么?
我是否应该创建成员和房屋部分视图并在视图中渲染它们??
有没有办法收集JavaScript中的所有内容,然后将整个家族对象传递给控制器
我正在使用带有实体框架的MVC5。我无法解决这个问题。感谢您的帮助

下面是一个对象的示例

public class family
{

    public int id { get; set; }
    public int familyname { get; set; }
    public List<member> members { get; set; }
    public List<house> houses { get; set; }
}

public class member
{
    public int id { get; set; }
    public string name { get; set; }
    public DateTime birthdate { get; set; }

    //foreign key
    public family Family { get; set; }
    public int FamilyID { get; set; }
}

public class house
{

    public int id { get; set; }
    public int number { get; set; }
    public string address { get; set; }
    //foreign key
    public family Family { get; set; }
    public int FamilyID { get; set; }
}

public class FamilyViewModel
{
   public family Family { get; set; }
    public member Member { get; set; }
    public house House { get; set;}
    public List<member> Members { get; set; } //??
    public List<house> Houses { get; set; } //??
}

首先,请在family类内将familyname的数据类型更改为string。而家庭视图模型将与您的家庭类相同

目前我正在从事一个具有这种功能的MVC项目。请参见,在本例中,首先您需要为系列保存数据。保存时,成员和房屋将为空。 例如,第一次保存数据时,假设这里的family id为1,familyname为John,members and House为空。 希望你能理解到这一点

您已经为成员和房屋渲染了两个局部视图。在主视图中提供两个按钮(这只是您的族视图)。1用于添加成员,另1用于添加房屋。所以,当用户单击“添加成员”时,会显示一个弹出模式或任何您想要的内容,用户可以在其中提交家庭成员。房屋也是如此

然后,在保存家庭成员时(我的意思是当他们在成员弹出模式中单击SAVE按钮时),只需调用jquery/ajax函数并将数据发布到控制器方法,包括当前的家庭Id

看我下面的代码

//这将在成员的弹出模式中

<div class="row with-forms">
 <div class="col-md-12">
   <h5>Member Name</h5>
    <input class="search-field" type="text" name="name" id="memberName" />
  </div>
  <div class="col-md-12">
    <h5>Birth Date</h5>
    <input class="search-field" type="text" name="DOB" id="memberDOB" />
  </div>  
  <div class="col-md-12">
    <input class="btn btn-success" type="button" id="saveMembers" />
  </div>                       
</div>
就这样。然后,您可以在Action方法中保存数据。这样,您就可以使用相同的ajax方法发布同一familyId的房屋数据

在控制器操作方法中,您可以这样进行验证

public ActionResult Submit(FamilyViewModel CompleteFamily)
{
 if(FamilyViewModel.id == 0)
   // This is a new entry to family.
   // Return your new familyId in a viewBag and keep that in a hidden field 
   //in your view HTML
 else
   {
     //You just need to update the family. I mean, here you are adding 
     //members and houses to the respective family Id.
   }
 }
请看,不要忘记在viewBag中返回您的familyId或任何您想要的内容,并将其保存在HTML的隐藏字段中。因此,只有您可以将成员/房屋添加到相应的Id中。就像我在上述ajax中传递数据的方式一样

例如,您的家庭ID在HTML中类似于bellow

<input type="hidden" id="hiddenFamilyId" value="@ViewBag.familyId"/>


希望它能解决你的问题。干杯…

首先,请在家庭类内将家庭名称的数据类型更改为字符串。而家庭视图模型将与您的家庭类相同

目前我正在从事一个具有这种功能的MVC项目。请参见,在本例中,首先您需要为系列保存数据。保存时,成员和房屋将为空。 例如,第一次保存数据时,假设这里的family id为1,familyname为John,members and House为空。 希望你能理解到这一点

您已经为成员和房屋渲染了两个局部视图。在主视图中提供两个按钮(这只是您的族视图)。1用于添加成员,另1用于添加房屋。所以,当用户单击“添加成员”时,会显示一个弹出模式或任何您想要的内容,用户可以在其中提交家庭成员。房屋也是如此

然后,在保存家庭成员时(我的意思是当他们在成员弹出模式中单击SAVE按钮时),只需调用jquery/ajax函数并将数据发布到控制器方法,包括当前的家庭Id

看我下面的代码

//这将在成员的弹出模式中

<div class="row with-forms">
 <div class="col-md-12">
   <h5>Member Name</h5>
    <input class="search-field" type="text" name="name" id="memberName" />
  </div>
  <div class="col-md-12">
    <h5>Birth Date</h5>
    <input class="search-field" type="text" name="DOB" id="memberDOB" />
  </div>  
  <div class="col-md-12">
    <input class="btn btn-success" type="button" id="saveMembers" />
  </div>                       
</div>
就这样。然后,您可以在Action方法中保存数据。这样,您就可以使用相同的ajax方法发布同一familyId的房屋数据

在控制器操作方法中,您可以这样进行验证

public ActionResult Submit(FamilyViewModel CompleteFamily)
{
 if(FamilyViewModel.id == 0)
   // This is a new entry to family.
   // Return your new familyId in a viewBag and keep that in a hidden field 
   //in your view HTML
 else
   {
     //You just need to update the family. I mean, here you are adding 
     //members and houses to the respective family Id.
   }
 }
请看,不要忘记在viewBag中返回您的familyId或任何您想要的内容,并将其保存在HTML的隐藏字段中。因此,只有您可以将成员/房屋添加到相应的Id中。就像我在上述ajax中传递数据的方式一样

例如,您的家庭ID在HTML中类似于bellow

<input type="hidden" id="hiddenFamilyId" value="@ViewBag.familyId"/>


希望它能解决你的问题。干杯…

如果您正在编辑集合中的现有对象,请参阅。如果要在集合中动态添加(和删除)项目,请参阅您是在编辑现有项目还是还需要添加新项目?我正在添加和编辑它们。但是首先添加,然后显示和编辑。那么你是如何显示家庭和成员的呢?从不同的角度来看?这就是我困惑的地方。我对议员和众议院有部分看法。在“族”视图中,我渲染“成员”和“房屋”。如果您正在编辑集合中的现有对象,请参阅。如果要在集合中动态添加(和删除)项目,请参阅您是在编辑现有项目还是还需要添加新项目?我正在添加和编辑它们。但是首先添加,然后显示和编辑。那么你是如何显示家庭和成员的呢?从不同的角度来看?这就是我困惑的地方。我对议员和众议院有部分看法。在家庭视图中,我渲染成员和房子。