1

コードを実行すると、loadingfromscreen ですぐに停止する値が保存されません。すべきことは、次のフォームから戻るボタンの texbox に値を再入力する複数ページのアプリケーション フォームです。

ASP.net のコードは長すぎて投稿できませんが、基本的には texbox と dropbox だけです。必要に応じて投稿できますが、主な問題は 90% 確実に C# コードです。

更新:停止と言うと、コードは続行されますが、辞書メソッドは実行されません...メソッドが停止する場所に矢印を付けました 辞書のみ

C#:

public partial class employment_driversapplication_personalinfo : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
    Dictionary<string, string> DriversApplicationData = (Dictionary<string, string>) Session["DriversApp"];

    try
    { 



            if (Page.IsPostBack)
            {
                LoadMemoryFromScreen(DriversApplicationData);
            }
            else
            {
                LoadScreenFromMemory(DriversApplicationData);
            }
              }

    catch //(Exception ex)
    {
       // throw new Exception("Exception occured in employment_driversapplication_personalinfo.aspx - Page_Load" + ex.Message);
    }
    finally
    {


    }
} 

private void LoadMemoryFromScreen(Dictionary<string, string> DicDriversApp)
    {

    DicDriversApp["position"] = position.Text; <---Stops here (won't even store this)
    DicDriversApp["fname"] = fname.Text;
    DicDriversApp["middleinitial"] = middleinitial.Text;
    DicDriversApp["lname"] = lname.Text;
    DicDriversApp["birthday"] = birthday.Text;
    DicDriversApp["proofofage"] = proofofage.SelectedValue;
    DicDriversApp["address"] = address.Text;
    DicDriversApp["city"] = city.Text;
    DicDriversApp["state"] = state.Text;
    DicDriversApp["email"] = email.Text;
    DicDriversApp["phone"] = phone.Text;
    DicDriversApp["altphone"] = altphone.Text;
    DicDriversApp["citizen"] = citizen.SelectedValue;
    DicDriversApp["whoreferred"] = whoreferred.Text;
    DicDriversApp["famfriend"] = famfriend.Text;
    DicDriversApp["relationship"] = relationship.Text;
    DicDriversApp["rateofpayexpected"] = rateofpayexpected.Text;
    DicDriversApp["rateofpaytype"] = RadioButtonList1.SelectedValue;
    DicDriversApp["employedNow"] = employednow.SelectedValue;
    DicDriversApp["curremployment"] = curremployment.Text;
    DicDriversApp["pastAddress"] = pastaddress.SelectedValue;
    DicDriversApp["previousAddress"] = previousaddress.Text;
    DicDriversApp["previousCity"] = previouscity.Text;
    DicDriversApp["previousZip"] = previouszip.Text;
    DicDriversApp["previousState"] = previousstate.Text;
    DicDriversApp["previousDuration"] = previousduration.Text;
    DicDriversApp["previousAddress1"] = previousaddress1.Text;
    DicDriversApp["previousCity1"] = previouscity1.Text;
    DicDriversApp["previousZip1"] = previouszip1.Text;
    DicDriversApp["previousState1"] = previousstate1.Text;
    DicDriversApp["previousDuration1"] = previousduration1.Text;

    Session["DriversApp"] = DicDriversApp;
    }

private void LoadScreenFromMemory(Dictionary<string, string> DicDriversApp)
{
    position.Text = DicDriversApp["position"];
    fname.Text = DicDriversApp["fname"] ;
    middleinitial.Text = DicDriversApp["middleinitial"];
    lname.Text = DicDriversApp["lname"];
    birthday.Text = DicDriversApp["birthday"];
    proofofage.SelectedValue = DicDriversApp["proofofage"];
    address.Text = DicDriversApp["address"];
    city.Text = DicDriversApp["city"];
    state.Text = DicDriversApp["state"];
    email.Text = DicDriversApp["email"];
    phone.Text = DicDriversApp["phone"];
    altphone.Text = DicDriversApp["altphone"];
    citizen.SelectedValue = DicDriversApp["citizen"];
    whoreferred.Text = DicDriversApp["whoreferred"];
    famfriend.Text = DicDriversApp["famfriend"];
    relationship.Text = DicDriversApp["relationship"];
    rateofpayexpected.Text = DicDriversApp["rateofpayexpected"];
    RadioButtonList1.SelectedValue = DicDriversApp["rateofpaytype"];
    employednow.SelectedValue = DicDriversApp["employedNow"];
    curremployment.Text = DicDriversApp["curremployment"];
    pastaddress.SelectedValue = DicDriversApp["pastAddress"];
    previousaddress.Text = DicDriversApp["previousAddress"];
    previouscity.Text = DicDriversApp["previousCity"];
    previouszip.Text = DicDriversApp["previousZip"];
    previousstate.Text = DicDriversApp["previousState"];
    previousduration.Text = DicDriversApp["previousDuration"];
    previousaddress1.Text = DicDriversApp["previousAddress1"];
    previouscity1.Text = DicDriversApp["previousCity1"];
    previouszip1.Text = DicDriversApp["previousZip1"];
    previousstate1.Text = DicDriversApp["previousState1"];
    previousduration1.Text = DicDriversApp["previousDuration1"];

}
4

1 に答える 1

1

このようなことを試してください:

 private void LoadMemoryFromScreen()
    {    
     Dictionary<string, string> driver = new Dictionary<string, string>();
     driver.Add("position", position.Text);
     driver.Add("othervalue",value.Text); ///etc..
     Session["dict"] = driver;
    }

その後、後で辞書の値にアクセスする場合は、次のように使用します。

var dict = (Dictionary<string, string>)Session["dict"];

これの問題は、dict.GetElementAt(index)値を取得するために使用する必要があることです。これはあまり良いアプローチではないと思います。

これは機能しますが、辞書を使用してこれを行う理由がちょっとわかりません。ページで 1 人のユーザーからのデータのみをロードしていると思いますか? 次に、すべてのプロパティを含むクラスを作成するだけで、この辞書/セッションハックを使用する代わりにそれを渡すことができます。

public class DriversApplicationData
{
public string position {get;set;}
public string firstname {get;set;}
//etc
}

次に、次のようなことができます

DriversApplicationData data = new DriversApplicationData();
data.position = position.Text;
data.firstname = fname.Text;

これにより、維持と値の取得/挿入がはるかに簡単になります。

于 2012-10-02T14:28:33.723 に答える