Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.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
多模型asp.net mvc表单帮助_Asp.net_Asp.net Mvc_Nested_Nested Forms_Nested Attributes - Fatal编程技术网

多模型asp.net mvc表单帮助

多模型asp.net mvc表单帮助,asp.net,asp.net-mvc,nested,nested-forms,nested-attributes,Asp.net,Asp.net Mvc,Nested,Nested Forms,Nested Attributes,我在想怎么做时有点困难 这是我的设想 用户必须为其业务创建IncomeDeclaration 但是一个IncomeDeclaration包括许多Activity IncomeDeclaration,用于其业务开展的每个活动 我希望我的表格包括新的IncomeDeclaration的字段以及活动incomedeclarations的字段(显然与该IncomeDeclaration相关) 我知道rubyonrails有一个名为“accepts_nested_attributes_for”的方法,tg

我在想怎么做时有点困难

这是我的设想

用户
必须为其
业务
创建
IncomeDeclaration

但是一个
IncomeDeclaration
包括许多
Activity IncomeDeclaration
,用于其业务开展的每个
活动

我希望我的表格包括新的
IncomeDeclaration
的字段以及
活动incomedeclarations
的字段(显然与该
IncomeDeclaration
相关)

我知道rubyonrails有一个名为“accepts_nested_attributes_for”的方法,tgat可能会在这里帮助我


请帮忙

这很容易实现。ASP NET MVC非常具有组合性,您可以使用模板来实现这一点,但继承不是一种可行的方法

因此,解决方案是
IncomeDeclaration
包含
活动IncomeDeclaration
列表,然后执行以下操作:

for(int  i=0; i< Model.Activities.Count; i++)
{
    Html.EditorFor(Model.Activities[i]);  // you need an editor template (and a display template)  for ActivityIncomeDeclarations
}
for(int i=0;i
更多信息:


http://www.dalsoft.co.uk/blog/index.php/2010/04/26/mvc-2-templates/

我的这篇博文可以帮助你很多:

但基本上,您将为
IncomeDeclaration
提供字段,然后根据需要动态添加
ActivityIncomeDeclaration
字段

如果您想实际序列化表单,您必须遵循上面博客文章中提供的说明

但是如果使用jQuery,还有第二种选择。您可以操作一个复杂的JavaScript对象,该对象将是同一服务器端C#类的副本,如:

var incDec = {
    Name: ""
    // and other properties
    ActivityIncomeDeclarations: []
};
然后,当用户添加这些ActivityIncomedRecarations时,您只需调用

incDec.ActivityIncomeDeclarations.push({
    // properties
});
然后,我的另一篇博文将帮助您将此对象转换为jQuery可以轻松处理的字典:

通过使用PRL登录博客帖子,您可以轻松做到:

$.ajax({
    url: "someURL",
    type: "POST",
    data: $.toDictionary(incDec),
    success: function(data, status, xhr){
        // process success
    },
    error: function(xhr, status, err){
        // process error
    }
});

你是说它继承了吗?不。。许可证包含许多活动。。。一个许可证有许多(每年的收入)。。每个IncomedRecaration也将有许多活动,因为投稿人必须在退出时提供每个活动的具体细节。这适用于显示现有的
IncomeDeclaration
活动以进行编辑。但是如果用户决定删除其中一个或添加一些新的呢?当然,如果你知道怎么做是可能的,但这肯定不再是微不足道的。不过我有一个问题。。。创建操作如何知道保存所有这些数据??。。现在我的创建操作只接收两个参数,int LicenseId和IncomeDeclaration income。。我不确定保存IncomedRecarations是否也会保存所有这些活动IncomedRecarations