好的,所以我尝试了很多东西,其中没有一件我非常熟悉,我似乎无法弄清楚如何完成我需要做的事情。这似乎是一项简单的任务,我确信有人已经完成了它!
本质上,我需要创建一个表单,该表单能够创建更多将绑定到模型的字段,甚至只需在提交时传递给控制器。
首先,我有一个非常简单的模型。类似的东西:
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; }
}
我的观点是一个简单的注册表单,它可以获取创建帐户所需的所有输入。它需要包含这些字段,但也可以在第一个名称,姓氏,电子邮件和isAdmin标志的另一行中添加“添加用户”和ajax的链接。
这是我被卡住的地方。我想我需要一些部分视图和自定义绑定到控制器,因为数据传入,但我无法弄清楚如何传入包含所有用户的对象,所以我可以迭代它。
如果有人能够指向我朝着正确的方向前进,我会非常高兴。
-Lost
答案 0 :(得分:4)
我强烈建议您阅读Phil Haacked - Model Binding to a List。他的例子很容易扩展到使用Ajax。
答案 1 :(得分: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>