2017-03-22 81 views
2

正在創建一個基於web的修訂資源,我正嘗試在c#中用asp.net創建一個選擇題測驗。 我已經創建並獲得它的工作,但它很長,並想知道如果有人有我想如何使代碼更緊湊的想法, 也打印最後的分數,它出現在我的網站上我的導航欄上方我不知道爲什麼。c#選擇題測試

此外,答案可以改變,提交按鈕只是點擊,我不能爲任何事情的愛找到任何關於如何阻止這一點。

我對所有事情都非常陌生,正在盡我所能。如果有人能指引我正確的方向或建議可能會有幫助的東西會很棒。

感謝

我appologise的代碼長度:

<asp:Content ID="Content1" ContentPlaceHolderID="Head" runat="server"> 
</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="Body" runat="server"> 
    <asp:Label ID="Label1" runat="server" Text=""></asp:Label> 


    <asp:RadioButtonList ID="RadioButtonList1" runat="server" 
     RepeatDirection="Horizontal" RepeatLayout="Table"> 
     <asp:ListItem Text="*Answer 1*" Value="Incorrect 1" /> 
     <asp:ListItem Text="*Answer 2*" Value="Correct" /> 
     <asp:ListItem Text="*Answer 3*" Value="I" /> 
     <asp:ListItem Text="*Answer 4*" Value="4" /> 
    </asp:RadioButtonList> 
    <asp:RadioButtonList ID="RadioButtonList2" runat="server" 
     RepeatDirection="Horizontal" RepeatLayout="Table"> 
     <asp:ListItem Text="*Answer 1*" Value="Incorrect 1" /> 
     <asp:ListItem Text="*Answer 2*" Value="Correct" /> 
     <asp:ListItem Text="*Answer 3*" Value="I" /> 
     <asp:ListItem Text="*Answer 4*" Value="4" /> 
    </asp:RadioButtonList> 
    <asp:RadioButtonList ID="RadioButtonList3" runat="server" 
     RepeatDirection="Horizontal" RepeatLayout="Table"> 
     <asp:ListItem Text="*Answer 1*" Value="Incorrect 1" /> 
     <asp:ListItem Text="*Answer 2*" Value="Correct" /> 
     <asp:ListItem Text="*Answer 3*" Value="I" /> 
     <asp:ListItem Text="*Answer 4*" Value="4" /> 
    </asp:RadioButtonList> 
    <asp:RadioButtonList ID="RadioButtonList4" runat="server" 
     RepeatDirection="Horizontal" RepeatLayout="Table"> 
     <asp:ListItem Text="*Answer 1*" Value="Incorrect 1" /> 
     <asp:ListItem Text="*Answer 2*" Value="Correct" /> 
     <asp:ListItem Text="*Answer 3*" Value="I" /> 
     <asp:ListItem Text="*Answer 4*" Value="4" /> 
    </asp:RadioButtonList> 
    <asp:RadioButtonList ID="RadioButtonList5" runat="server" 
     RepeatDirection="Horizontal" RepeatLayout="Table"> 
     <asp:ListItem Text="*Answer 1*" Value="Incorrect 1" /> 
     <asp:ListItem Text="*Answer 2*" Value="Correct" /> 
     <asp:ListItem Text="*Answer 3*" Value="I" /> 
     <asp:ListItem Text="*Answer 4*" Value="4" /> 
    </asp:RadioButtonList> 
    <asp:RadioButtonList ID="RadioButtonList6" runat="server" 
     RepeatDirection="Horizontal" RepeatLayout="Table"> 
     <asp:ListItem Text="*Answer 1*" Value="Incorrect 1" /> 
     <asp:ListItem Text="*Answer 2*" Value="Correct" /> 
     <asp:ListItem Text="*Answer 3*" Value="I" /> 
     <asp:ListItem Text="*Answer 4*" Value="4" /> 
    </asp:RadioButtonList> 
    <asp:RadioButtonList ID="RadioButtonList7" runat="server" 
     RepeatDirection="Horizontal" RepeatLayout="Table"> 
     <asp:ListItem Text="*Answer 1*" Value="Incorrect 1" /> 
     <asp:ListItem Text="*Answer 2*" Value="Correct" /> 
     <asp:ListItem Text="*Answer 3*" Value="I" /> 
     <asp:ListItem Text="*Answer 4*" Value="4" /> 
    </asp:RadioButtonList> 
    <asp:RadioButtonList ID="RadioButtonList8" runat="server" 
     RepeatDirection="Horizontal" RepeatLayout="Table"> 
     <asp:ListItem Text="*Answer 1*" Value="Incorrect 1" /> 
     <asp:ListItem Text="*Answer 2*" Value="Correct" /> 
     <asp:ListItem Text="*Answer 3*" Value="I" /> 
     <asp:ListItem Text="*Answer 4*" Value="4" /> 
    </asp:RadioButtonList> 
    <asp:RadioButtonList ID="RadioButtonList9" runat="server" 
     RepeatDirection="Horizontal" RepeatLayout="Table"> 
     <asp:ListItem Text="*Answer 1*" Value="Incorrect 1" /> 
     <asp:ListItem Text="*Answer 2*" Value="Correct" /> 
     <asp:ListItem Text="*Answer 3*" Value="I" /> 
     <asp:ListItem Text="*Answer 4*" Value="4" /> 
    </asp:RadioButtonList> 
    <asp:RadioButtonList ID="RadioButtonList10" runat="server" 
     RepeatDirection="Horizontal" RepeatLayout="Table"> 
     <asp:ListItem Text="*Answer 1*" Value="Incorrect 1" /> 
     <asp:ListItem Text="*Answer 2*" Value="Correct" /> 
     <asp:ListItem Text="*Answer 3*" Value="I" /> 
     <asp:ListItem Text="*Answer 4*" Value="4" /> 
    </asp:RadioButtonList> 

    <asp:Button ID="Button1" runat="server" Text="Submit Final Answers" OnClick="Submit_Click" /> 
    <script runat="server"> 
     protected void Submit_Click(object sender, EventArgs e) 
     { 
      int Score = 0; 
      string selectedValue1 = RadioButtonList1.SelectedValue; 
      if (selectedValue1 == "Correct") 
      { 
       Score++; 
      } 
      string selectedValue2 = RadioButtonList2.SelectedValue; 
      if (selectedValue2 == "Correct") 
      { 
       Score++; 
      } 
      string selectedValue3 = RadioButtonList3.SelectedValue; 
      if (selectedValue3 == "Correct") 
      { 
       Score++; 
      } 
      string selectedValue4 = RadioButtonList4.SelectedValue; 
      if (selectedValue4 == "Correct") 
      { 
       Score++; 
      } 
      string selectedValue5 = RadioButtonList5.SelectedValue; 
      if (selectedValue5 == "Correct") 
      { 
       Score++; 
      } 
      string selectedValue6 = RadioButtonList6.SelectedValue; 
      if (selectedValue6 == "Correct") 
      { 
       Score++; 
      } 
      string selectedValue7 = RadioButtonList7.SelectedValue; 
      if (selectedValue7 == "Correct") 
      { 
       Score++; 
      } 
      string selectedValue8 = RadioButtonList8.SelectedValue; 
      if (selectedValue8 == "Correct") 
      { 
       Score++; 
      } 
      string selectedValue9 = RadioButtonList9.SelectedValue; 
      if (selectedValue9 == "Correct") 
      { 
       Score++; 
      } 
      string selectedValue10 = RadioButtonList10.SelectedValue; 
      if (selectedValue10 == "Correct") 
      { 
       Score++; 
      } 
      Response.Write(Score); 

     } 
    </script> 
</asp:Content> 
+1

代替這個,你可以嘗試使用中繼器控制或其他綁定控件,它將根據你綁定的記錄數重複。 –

+0

您應該熟悉使用方法。您不必多次像評估一樣編寫邏輯。 –

+1

我同意@KevinShah關於使用中繼器控制和數據綁定。它會更簡潔。此外,現在的問題是,如果您想更改測驗,則必須更改代碼 - 如果使用數據綁定和中繼器,則可以改爲更改數據。 – EJoshuaS

回答

1

這可能縮短了評估階段:

RadioButtonList[] lists = new RadioButtonList[] {RadioButtonList1, RadioButtonList2, RadioButtonList3, RadioButtonList4, RadioButtonList5, RadioButtonList6, RadioButtonList7, RadioButtonList8, RadioButtonList9, RadioButtonList10 }; 

foreach (RadioButtonList element in lists) { 
      if (element.SelectedValue == "correct") { 
       Score++; 
     } 
} 
1

對於Submit_Click方法,我會鼓勵你讓你的ListBox或Enumerable中的所有CheckBox都有某種類型。然後你可以迭代這個List並在每次迭代中評估結果。東西的線路:

protected void Submit_Click(object sender, EventArgs e) 
{ 
    int score = 0; 
    List<RadioButtonList> list = new List<RadioButtonList>() { RadioButtonList1, RadioButtonList2, ... RadioButtonList3 }; 
    foreach (var element in list) 
    { 
     if (element.SelectedValue == "correct") { 
      score++; 
    } 
    Response.Write(score); 
} 
+0

這真的很好,謝謝你,但是隻有在輸入腳本代碼時,無論輸入如何,輸出分數都是0。感謝您的快速回復 –

+0

@DanielTurville,我剛剛意識到我輸入了「正確」而不是「正確」。將其更改爲「正確」,您可能很好。另外,你可以使用string.Equals方法進行比較。防爆。 'string.Equals(「correct」,element。SelectedValue,StringComparison.OrdinalIgnoreCase)。比較這些值時會忽略這種情況。 –

0

我沒有一個確切的解決方案,但既然你問到被指向正確的方向,這裏的步驟,你應該採取:

  • 創建用戶控件用問題陳述的文本框和無線電控制列表或任何選項,還可以添加隱藏字段來放置標識符或正確標識問題的內容。
  • 在主網頁上,您可以使用Repeater控制或動態地將數據添加到用戶控件。
  • 用於檢查正確Choice選擇的所有代碼應該位於用戶控件中。
  • 在主窗體提交時,訪問每個用戶控件並收集結果。

我年前在ASP.NET web表單類似的應用程序,但我有「< <後退」和「下一頁>>」按鈕,這樣一個頁面上顯示的是隻有一個問題,整個應用程序記錄的時間,所以當測試持續時間結束後,用戶到達最終頁面。

+0

我認爲這有點超出我所知道的,你能否把我連接到我可以學習或看到你的意思的例子。謝謝 –

+0

當然,有沒有辦法,我們可以把這個討論關閉stackoverflow? –

+0

確定男人,無論你喜歡什麼? –