2016-07-21 11 views
0

適切なタイトルが付いてくるのを少し時間を費やして、正しく言い聞かせたかどうかわかりません。私の例では、私は、Personオブジェクトを使用しますが、私の実際のアプリケーションでは、よりドメイン固有の何か使用している:私の要件は、ユーザが入力0できる可能にしている、基本的にユーザーがASP.NETビューでオブジェクトの変数リストを入力できるようにする入力を作成する

public class Person { 
    public string Name { get; set;} 
    public string Gender { get; set; } 
    public string HairColor{ get; set; } 
} 

を - マッピングします10 Personオブジェクト、モデルのList<Person> Peopleプロパティに追加します。これらの追加のブロックを追加します下部にあるボタン「別の追加」を持つ

<div> 
    <label for="name">Name</label> 
    <input type="text" name="name"> 
</div> 

<div> 
    <label for="gender">Gender</label> 
    <input type="radio" name="gender" value="male"> Male 
    <input type="radio" name="gender" value="female"> Female 
</div> 

<div> 
    <label for="hairColor">Hair Color</label> 
    <input type="radio" name="hairColor" value="black"> Black 
    <input type="radio" name="hairColor" value="brown"> Brown 
    <input type="radio" name="hairColor" value="blonde"> Blonde 
    <input type="radio" name="hairColor" value="red"> Red 
</div> 

、:私はこれを行うことを考えていた方法は、一人の人物に関連する入力のブロックを持っている

JQueryを使用して入力します。

質問属性をHTML入力タグに生成してList<Person>に正しくバインドするにはどうすればよいですか? <input type="text" name="People[0].Name">は機能しますか?

答えて

0

ページを2つの部分表示に分割します。最初の部分的なビューは、保存された人々のリストを返すでしょう。 2番目の部分図は、新しい人物を追加するビューになります。

あなたのページの最初の読み込みは、「別のものを追加する」ボタンを使って一覧表示しています。 「別のものを追加」をクリックすると、jqueryを使用してAddPersonの部分ビューゲッターが呼び出され、divを先ほど呼び出された部分ビューに置き換えられます。

AddPersonの部分表示で[保存]をクリックすると、新しい人物が投稿され、リストが更新されます。

+0

これは唯一ではありませんフォームの。アプリケーションには他の多くのパラメータがあります。したがって、これらのブロックの1つを入力する途中で投稿することは理想的ではありません。ユーザーがそれぞれの "Person"を入力し、最後に投稿することができれば、私はそれを好むだろう。しかし、私のモデルのリストに正しくバインドするためにhtml inputタグの "name"属性を設定する方法が混乱しています。 –

0

私は、ページからデータを取り込み、asp.net側でどのようにデータにアクセスしようとしているのかよく分かりません。通常、サーバーがアクセスするものにはrunat="server"というタグが必要です。

ブロックの重複をボタンクリックで生成するように指定しますが、JQueryを使用します。これを行うには、複製しようとしているHTMLブロックの文字列変数を作成する必要があります。いくつかの基本的な文字列の連結とループを使用して、入力にname=name0name=gender0、...などを付けることができます。 「別のものを追加」を押すと、文字列内の名前に追加された増分に+1が追加され、name=name1name=gender1などになります。

+0

ASP.NET MVCを使用して私の理解から、フォームを使用し、ポストリクエストを使用してそれをサーバーに送り返すと、コントローラーのポストアクションに送られ、フォームエレメントを次のプロパティにバインドします。モデル。私はJQueryを使用してブロックを生成する方法についてかなり良いアイデアを持っていたので、確認してくれてありがとうございました。しかし、それは助けが必要な領域ではありません。 –

+0

@StevePakサーバー側ではPOSTパラメータにアクセスします。あなたが作成した「人物の追加」ブロックの量までカウンターします。 POST ["name"&counter] '、' POST ["gender"&counter] 'などのようなデータにアクセスしてください。 –

関連する問題