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; }
}

私の意見は、アカウントを作成するために必要なすべての入力を受け取る単純なサインアップ フォームです。これらのフィールドが必要ですが、「ユーザーを追加」というリンクと、名、姓、電子メール、および isAdmin フラグを含む別の行に ajax を含めることもできます。

これは私が立ち往生するところです。データが渡されるときに、部分的なビューとコントローラーへのカスタムバインディングを備えたものが必要だと考えていますが、すべてのユーザーを含むオブジェクトを渡す方法がわからないので、それを反復処理できます。

誰かが私を正しい方向に向けることさえできれば、私はとても幸せです.

-失った

4

2 に答える 2

4

Phil Haacked - Model Binding to a List を読むことを強くお勧めします。彼の例は、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 に答える