2016-07-18 5 views
0

確認のページにフォームデータを送信しようとしています。ここでは、cc情報を入力してトランザクションを完了します。すべての情報をリストに追加して、後で新しいフォームの隠しフィールドとしてコード化し、情報を有料で送信します。しかし、repsonse.writeを実行して、格納されている情報が何であるかを確認します。私はいつも同じ名前を何度も何度も繰り返します。私がどこにいなくなっているか正確にはわからない。ご協力いただきありがとうございます!前の項目を上書きしないでリストに項目を追加する

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (Request.HttpMethod == "POST"){ 
     formData attendee = new formData(); 
     NameValueCollection nvc = Request.Form; 
     List<formData> attendees = new List<formData>(); 

     if (!string.IsNullOrEmpty(nvc["fn1"])) 
     { 
      var fn = nvc["fn1"]; 
      var ln = nvc["ln1"]; 
      var email = nvc["email1"]; 
      var wife = nvc["wife1"]; 
      var luncheon = nvc["lucheon1"]; 

      attendee.firstName = fn; attendee.lastName = ln; attendee.email = email; attendee.wife = wife; attendee.luncheon = luncheon; 
      attendees.Add(attendee); 

     } 
     if (!string.IsNullOrEmpty(nvc["fn2"])) 
     { 
      var fn = nvc["fn2"]; 
      var ln = nvc["ln2"]; 
      var email = nvc["email2"]; 
      var wife = nvc["wife2"]; 
      var luncheon = nvc["lucheon2"]; 

      attendee.firstName = fn; attendee.lastName = ln; attendee.email = email; attendee.wife = wife; attendee.luncheon = luncheon; 
      attendees.Add(attendee); 
     } 

     foreach(var person in attendees) 
     { 
      Response.Write(person.firstName.ToString()); 
      Response.Write(person.lastName.ToString()); 
      Response.Write(person.email.ToString()); 
      Response.Write(person.wife.ToString()); 
      Response.Write(person.luncheon.ToString()); 
     } 
    } 
} 
public class formData 
{ 
    public string firstName { get; set; } 
    public string lastName { get; set; } 
    public string email { get; set; } 
    public string wife { get; set; } 
    public string luncheon { get; set; } 

} 

}

+0

ページが読み込まれるたびに出席者リストを再作成している可能性がありますか? –

+0

それは私が考えていたことです、ページロード関数は関数を一度呼び出す必要がありますか? – Justin

+0

私の答えを見てください。それが役に立てば幸い。 –

答えて

0

私は参加者のあなたの配列は、このようなデータ型であることを行っていると仮定...各出席者は、{FN、LN、電子メール、妻、そして昼食}プロパティがあります。出席者(0)、{fn2、ln2、email2、wife2、luncheon2}は出席者(1)などの{fn1、ln1、email1、wife1、luncheon1}のようにPOSTに保存されているようです。

nullのデータFN#がありますまで、あなたはそれがをループして参加者を作成し続け、

このような
var count = 1; 
while (!string.IsNullOrEmpty(nvc["fn" + count])) 
{ 
    attendee(count).firstname=nvc["fn" + count] 
    attendee(count).lastname=nvc["ln" + count] 
    //...for the rest of the fields 
    count++; //be sure and increment count 
} 

をループしてみてください。

+0

私は出席者(カウント)を使用しようとするとエラーが発生します。私は配列に私のリストを切り替える必要がありますか? – Justin

0

Page_Loadイベントでリストを作成しています。 Page_Loadイベントは、ページがロードされるたびに、イベントが発生するたびにリストをポストバックしたり、ポストバックしたりしないで再作成します。

セッション変数を作成して使用することができます。例として:

protected void Page_Load(object sender, EventArgs e) 
{ 
    List<formData> attendees; 

    if(Session["attendees"] == null) 
    { 
     attendees = new List<formData>(); 
     // your logic logic ... 
     Session["attendees"] = attendees; 
    } 
    else 
    { 
     var attendees = (List<formData>)Session["attendees"]; 
     // your logic ... 
     Session["attendees"] = attendees; 
    } 
} 

また、コードを少し破ることも考えています。おそらく別の方法でリストに追加するコードを置く。

ASP.NET Session State Overview

+0

このページは、会議に出席するために支払っている人物を入力した後のランディングページで、CC情報を収集し、すべての名前を有料でデータベースに保存するために使用されます。これはセッションごとに1回です。私はこれを行うに行く簡単な方法があると確信していますが、私はまだかなり新しいasp.netです。 – Justin

+0

次に、セッション変数を使用できます。 –

関連する問題