2017-07-11 68 views
1

我是新來NET MVC和我試圖開發一個應用程序,其中用戶會回答幾個問題,ASP.NET MVC只有一個單選按鈕輸入的是傳遞給控制器​​

我有以下模式有關我的問題:

  • 問題
  • 選擇(包括問題ID爲FK)

視圖模型

public class QuestionChoiceViewModel 
{ 
    public Question Question { get; set; } 
    public IEnumerable<Choice> Choices { get; set; } 
} 

在我鑑於我想顯示他們應對的選擇爲單選按鈕的所有問題,所以我在我的觀點選擇/索引以下行。

@model IEnumerable<WebApplication.Models.QuestionChoiceViewModel> 


@using (Html.BeginForm("Index", "Choices", FormMethod.Post)) 
{ 
    @Html.AntiForgeryToken() 
    <div class="form-horizontal"> 
     @foreach (var q in Model){ 
      @:<b>Question:</b> 

      @Html.DisplayFor(modelItem => q.Question.questionText) 
      <form class="form-group"> 
      @foreach(var c in q.Choices){ 
       <input type="radio" name="@c.choiceText" value="@c.choiceID" /> 
       @c.choiceText 
       <br /> 
      } 
      </form> 
      <br /> 
     } 

     <div class="form-group"> 
      <div class="col-md-offset-2 col-md-10"> 
       <input type="button" value="Back" class="btn btn-default" id="btnBack" /> 
       <input type="submit" name="btnSubmit" value="Submit" class="btn btn-default" /> 
      </div> 
     </div> 
    </div> 
} 

我顯示,可以選擇多個問題沒有問題。

而對於代碼的最終樣品,看我控制器只需的FormCollection類型paramater

public ActionResult Index(FormCollection form) 

問題:當我調試,看看是什麼形式 - 還有令牌等 - 是僅第一個單選按鈕組的值。假設我有10個問題,但是我在控制器中傳遞的是第一個問題中選擇的內容。我做錯了什麼?

此外,任何關於我的風格的提示是最受歡迎的,謝謝!

+0

您的模型不能使用'foreach'循環。參考[這個答案](https://stackoverflow.com/questions/30094047/post-an-html-table-to-ado-net-datatable/30094943#30094943) –

+0

斯蒂芬是正確的,你的'名稱'值無線電需要匹配模型內部的屬性名稱。現在,您有選擇文本填充「名稱」屬性。 –

+0

@StephenMuecke謝謝你的時間,你的回答對我很有用。但是當我將我的名字屬性更改爲問題ID時,我可以像我想要的那樣爲單選按鈕生成名稱。因爲我想將它們與問題ID進行分組。它現在工作,我希望我不會錯過別的東西。 – Alp

回答

1

乍一看,兩件事情似乎格格不入:

  • 內表單標籤<form class="form-group">不必是形式和嵌套形式可能會造成問題。
  • 無線電輸入的名稱屬性用於將它們組合在一起,所以對於一個問題的選擇應該是相同的,例如,它應該是@q。 代替@東西 c.choiceText

另外,名稱應該是一些短標識符,而不是針對用戶一文中,我supsect c.choiceText是:

ID和名稱標記必須以字母([A-Za-z])開始,並且可以是 ,後跟任意數量的字母,數字([0-9]),連字符(「 - 」), 下劃線(「_」),冒號(「:」)和句點(「。」)。 https://www.w3.org/TR/html401/types.html#type-name

+0

這對我有幫助。問題在於你提出的第二點。我使用問題ID更改了名稱屬性,以便將它們按照我想要的方式分組。謝謝你的時間 :) – Alp

相關問題