4

好的,所以我已经尝试了很多东西,但我都不太熟悉,而且我似乎无法确切地弄清楚如何完成我需要做的事情。这似乎是一项简单的任务,我相信有人已经做到了!

本质上,我需要创建一个能够创建更多绑定到模型的字段的表单,甚至只是在提交时传递给控制器​​。

首先,我有一个非常简单的模型。就像是:

public class Account
{
    public string Organization { get; set; }
    public List<UserModel> Users { get; set; }
}
public class UserModel
{
    public string UserFirstName { get; set; }
    public string UserLastName { get; set; }
    public string UserEmailAddress { get; set; }
    public bool UserIsAdmin { get; set; }
}

我的观点是一个简单的注册表单,它包含创建帐户所需的所有输入。它需要有这些字段,但也能够在另一行中显示“添加用户”和 ajax 的链接,其中包含名字、姓氏、电子邮件和 isAdmin 标志。

这就是我卡住的地方。我想我需要一些带有部分视图和自定义绑定到控制器的东西,因为数据被传入,但我不知道如何传入一个包含所有用户的对象,以便我可以遍历它。

如果有人能指出我正确的方向,我会非常高兴。

-丢失

4

2 回答 2

4

我强烈推荐阅读Phil Haacked - 模型绑定到列表。他的示例可以很容易地扩展到使用 Ajax。

于 2012-06-19T13:25:02.817 回答
1

您可以在 JSON 中创建模型并将其发送到控制器:

JS:

var account = {
    Organization: // get from form or wherever
    Users: []
}

$('#submit').click(function() {   

    // loop through each new user div and append to the account object 
    $('.new-user').each(function() {
        var $newUser = $(this);
        Account.Users.push({
            UserFirstName: $newUser.find('.first-name').val(),
            UserLastName: $newUser.find('.last-name').val(),
            ...
        });
    });

    // ajax call to submit form with data: { Account: account }
});

HTML

<form ...>
   <!-- registration fields -->

   <!-- dynamically added new user fields - wrap in parent element -->
   <div class="new-user">
       <input class="first-name" type="text" />
       <input class="last-name" type="text" />
       ...
   </div>

   <input type="button" id="submit" value="Submit" />
</form>
于 2012-06-19T13:39:33.183 回答