2016-07-09 9 views
-1

Ich habe ein Quizformular, dass es einige Fragen mit seinen Antworten (Radiobuttons) zeigt, der Benutzer muss die Fragen beantworten und senden, ich machte einige Klasse wie folgt:senden Sie eine Liste zu sehen, füllen Sie und erhalten Sie es in asp.net mvc

public class Question 
{ 

    public int Qid { get; set; } 
    public string Questionstext { get; set; } 
    public int selected { get; set; } 
    public List<Qitem> lst { get; set; } 

} 
public class Qitem 
{ 
    public int id { get; set; } 
    public string txt { get; set; } 

} 

dann schicke ich eine Liste der Frage in den Blick:

List<Question> llst = new List<Question> 
     { 
      new Question 
      { 
       Qid = 1, 
       Questionstext = "is it true?", 
       lst = new List<Qitem> 
       { 
        new Qitem 
        { 
         txt = "yes", 
         id = 1 
        }, 
        new Qitem 
        { 
         id = 2, 
         txt = "no" 
        } 
       } 
      }, 
      new Question 
      { 
       Qid = 1, 
       Questionstext = "is it true 2?", 
       lst = new List<Qitem> 
       { 
        new Qitem 
        { 
         txt = "yes2", 
         id = 3 
        }, 
        new Qitem 
        { 
         id = 4, 
         txt = "yes3" 
        } 
       } 
      } 
     }; 

     return View(llst); 

wie kann ich es zeigen, und legt dann die Antworten, die Antwort muss in ‚ausgewählt gestellt werden "Eigentum der Frage. mein Problem ist über Ansicht und speziell Radioknöpfe.

Antwort

2

Ihre Ansicht sollte

@model List<Question> 
@using (Html.BeginForm()) 
{ 
    for (int i = 0; i < Model.Count; i++) 
    { 
     @Html.HiddenFor(m => m[i].Qid) 
     <h2>@Model[i].Questionstext</h2> 
     foreach (var answer in Model[i].lst) 
     { 
      <label> 
       @Html.RadioButtonFor(m => m[i].selected, answer.id, new { id = "" }) 
       <span>@answer.txt </span> 
      </label> 
     } 
    } 
    <input type="submit" value="Save" /> 
} 

sein, die wieder schreiben wird (vorausgesetzt, Index ist die denselben Namen wie die GET-Methode verwendet, um diese Ansicht zu erzeugen).

public ActionResult Index(List<Question> model) 

Randbemerkung: Wenn Sie auch die Questionstext Wert wollen auch gebucht werden, sind @Html.HiddenFor(m => m[i].Questionstext)

+0

können wir auch Viewbag oder TempData verwenden, um die Liste zu speichern und in View verwenden, wenn wir mehrere Listen zu senden sind verschiedene Modelle zur Ansicht –

+0

@HimaanSingh, 'TempData' ist nicht geeignet, um Daten an eine Ansicht zu senden, und" ViewBag "stattdessen auf einem stark typisierten Modell, wie OP vorschlägt, ist schrecklich praktisch –

Verwandte Themen