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