2010-02-23 51 views
0

我正在構建一個ASP.net測驗引擎,並且我在Flash中使用之前的測驗引擎作爲ASP版本的模板。我卡我如何能做到下面的代碼在ASP.netASP.NET將動作腳本代碼轉換爲ASP等效(二維數組)

// array to hold the answers 
var arrAnswers:Array = new Array(); 
// create and array of answers for the given question 
arrAnswers[i] = new Array(); 
// loop through the answers of each question 
for (j=0; j<dataXML.question[i].answers.length(); j++) 
{ 
//array of answers for that given question is pulle from XML data 
arrAnswers[i][j] = dataXML.question[i].answers[j][email protected](); 
// if the given answer is the correct answer then set that value to the arrcorrect 
} 

任何人都可以對我如何能得到上面的動作腳本代碼在ASP.net幫助?

+0

有沒有更高的循環(i = 0)這個例子中缺少?它看起來像循環了問題,然後回答了每個問題的所有可能答案。我對麼? – used2could 2010-02-23 13:23:26

+0

你有更高的循環...你是正確的代碼循環通過每個問題,然後找到每個問題的每個可能的答案! – c11ada 2010-02-23 13:55:19

回答

2

要將此代碼直接轉換,你將宣佈一個交錯數組,像這樣:

var answers = new string[questionCount][]; 

你會對其進行初始化使用LINQ to XML外部數組的元素,像這樣:

foreach(var question in data.Elements("Question")) 
    answers[i] = question.Elements("Answer").Select(a => a.Value).ToArray(); 

你也可以做到這一點沒有一個循環,就像這樣:

var answers = data.Elements("Question") 
    .Select(q => q) 
    .ToArray(); 

但是,最好將數組重構爲QuizQuestion類,其中ReadOnlyCollection<String> AnswerChoices

例如:

class QuizQuestion { 
    public QuizQuestion(XElement elem) { 
     Text = elem.Element("Text").Value; 
     AnswerChoices = new ReadOnlyCollection<String>(
      elem.Elements("Answer").Select(a => a.Value).ToArray() 
     ); 
     CorrectAnswerIndex = elem.Attr("CorrectAnswer"); 
    } 
    public string Text { get; private set; } 
    public ReadOnlyCollection<String> AnswerChoices { get; private set; } 
    public int CorrectAnswerIndex { get; private set;} 
} 

修改的LINQ to XML代碼以滿足您的XML格式。

+0

當我嘗試聲明鋸齒陣列時,出現錯誤 上下文關鍵字「var」可能只出現在局部變量聲明中 我知道錯誤消息試圖說什麼,但我需要將此變量聲明爲全局變量,而不是本地變量。 – c11ada 2010-02-23 14:08:35

+0

用'string [] []'替換'var'。 – SLaks 2010-02-23 14:30:56