2

我在弄清楚如何做到这一点时遇到了一些麻烦。

这是我的场景

AUser必须IncomeDeclaration为他的Business.

但是他的业务所涉及的每一个都IncomeDeclaration包括许多。ActivityIncomeDeclarationsActivity

我希望我的表单包含新IncomeDeclaration的字段以及ActivityIncomeDeclarations(显然与此相关的IncomeDeclaration)字段......

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

请帮忙!

4

2 回答 2

1

这很容易实现。ASP NET MVC 是非常组合的,您可以使用模板来实现这一点,但继承不是要走的路。

所以解决方案是IncomeDeclaration包含一个列表,ActivityIncomeDeclarations然后执行以下操作:

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
}

更多信息:

http://www.asp.net/mvc/videos/mvc2-template-customization http://www.dalsoft.co.uk/blog/index.php/2010/04/26/mvc-2-templates/

于 2011-02-22T19:28:39.597 回答
1

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

Asp.net MVC 模型绑定到 List<T>

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

如果您想实际序列化表单,则必须按照上面博客文章中提供的说明进行操作。

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

var incDec = {
    Name: ""
    // and other properties
    ActivityIncomeDeclarations: []
};

然后,当用户添加那些 ActivityIncomeDeclarations 时,您总是只需调用

incDec.ActivityIncomeDeclarations.push({
    // properties
});

然后我的另一篇博客文章将帮助您将此对象转换为一个字典,例如 jQuery 很容易处理:

使用 jQuery 将复杂的 JSON 对象发送到 Asp.net MVC

通过使用 prlogin 博客文章,您可以轻松地做到:

$.ajax({
    url: "someURL",
    type: "POST",
    data: $.toDictionary(incDec),
    success: function(data, status, xhr){
        // process success
    },
    error: function(xhr, status, err){
        // process error
    }
});
于 2011-02-22T19:30:19.517 回答