2016-04-01 12 views
0

Ich habe Probleme beim Erstellen eines ASP.NET MVC Programms, das nach dem Zufallsprinzip einen Schüler auswählen und nach dem Zufallsprinzip eine Frage auswählen und aus irgendeinem Grund kann ich es nicht in der .cshtml-Datei arbeiten. Mache ich etwas falsch? Auch ich diesen Fehler erhalteASP.Net MVC zufällig, Controller und Ansichten

„Das Modellelement in das Wörterbuch übergeben ist vom Typ‚QuizProgramMVC.Models.Student‘, aber dieses Wörterbuch erfordert ein Modell Artikel vom Typ‚QuizProgramMVC.Models.StudentQuestion‘.“ "Mit QuizProgrammMVC.Modelle;

-Controller

public class QuizController : Controller 
{ 
    public QuizController TheQuiz { get; set; } 

    // GET: Quiz 
    public ActionResult Index() 
    { 
     StudentQuestion sq = new StudentQuestion(); 

     return View(sq); 
    } 

    public ActionResult QuizProgram() 
    {   
     Student program = new Student(); 

     return View(program); 
    } 

} 

Ansicht

@model QuizProgramMVC.Models.StudentQuestion 
@using QuizProgramMVC.Models; 

@{ 

    Layout = null; 
} 

<!DOCTYPE html> 

<html> 
<head> 
    <meta name="viewport" content="width=device-width" /> 
    <title>QuizProgram</title> 
</head> 
<body> 
    <div> 
     <h1>Quiz Program</h1> 

       <div class="row"> 
        <div class="col-md-6"> 
         <table class="table table-condensed"> 
          <thead> 
           <tr> 
            <th>Question</th> 
            <th>Answer</th> 
           </tr> 
          </thead> 
          <tbody> 
           @foreach (Question q in Model.Questions) 
           { 
            <tr> 
             <td> 
              @q.Quest 
             </td> 
             <td> 
              @q.Answer 
             </td> 
            </tr> 
           } 
          </tbody> 
         </table> 
        </div> 
       </div> 
      <br/> 
       <div class="row"> 
        <div class="col-md-6"> 
         <table class="table table-condensed"> 
          <thead> 
           <tr> 
            <th>First Name</th> 
            <th>Last Name</th> 
           </tr> 
          </thead> 
          <tbody> 
           @foreach (Student s in Model.Students) 
           { 
            <tr> 
             <td> 
              @s.FirstName 
             </td> 
             <td> 
              @s.LastName 
             </td> 
            </tr> 
           } 
          </tbody> 
         </table> 
        </div> 
       </div> 
     <br/> 
     @using (Html.BeginForm()) 
     { 
      <div> 
       Type Answer: <input id="param1" name="param1" type="text" /> 
       <br /> 
       <input type="submit" value="Submit" /> 
      </div> 
     } 
    </div> 
</body> 
</html> 
+2

Ist die Fehlermeldung nicht offensichtlich? Sie übergeben einen anderen Typ als erwartet von Ihrer Aktionsmethode. Anstelle des Student-Objekts müssen Sie ein Objekt von 'StudentQuestion' übergeben, da Ihre Ansicht stark darauf geschrieben ist. – Shyju

Antwort

0

Das Problem werden Sie die gleiche Ansicht Seite mit verschiedenen Modellen nennend.

public ActionResult QuizProgram() 
{   
    Student program = new Student();//Here you need to pass the StudentQuestion to the view. 
    return View(program); 
} 

die oben Ansicht Seite aufrufen (.cshtml) über QuizProgram() wirft einen Fehler, da in dieser Ansicht Seite Sie das Modell definiert als

@model QuizProgramMVC.Models.StudentQuestion 

Es erlaubt keine andere Viewmodels, weil es ist stark typisiert Ansicht.