/ / Variable von einer Klasse an eine andere Klasse übergeben - asp.net-mvc

Variable von einer Klasse an eine andere Klasse übergeben - asp.net-mvc

Ich habe Probleme beim Übergeben der VariablenScore, das ist eine Variable in meiner Evaluierungsklasse, die hier in meiner [httpPost] ifstatements (Evaluierungsmodell) -Methode in meinem Quiz-Controller auf eine Ansicht initialisiert wird, die zu einem anderen Controller einer anderen Klasse gehört. Wenn die Bewertung größer als null ist, d. H. Ich beantworte mindestens eine Frage richtig, werde zur Ergebnisansicht gebracht und die Bewertung wird mir angezeigt. Ich habe jedoch Probleme, diese Partitur in einer anderen Ansicht auszudrucken, die als Index bezeichnet wird und Teil meiner Indexmethode in meinem LEADERBOARD-Controller der LEADERBOARD-Klasse ist

Quiz-Controller

public ActionResult ifStatement()
{
var evalVM = new Evaluation();

//the below is hardcoded for DEMO. you may get the data from some
//other place and set the questions and answers

var q1 = new Question { ID = 1, QuestionText = "1. Which of the following shows the correct syntax for an if statement?" };
q1.Answers.Add(new Answer { ID = 12, AnswerText = "a. if expression" });
q1.Answers.Add(new Answer { ID = 13, AnswerText = "b. if { expression }" });
q1.Answers.Add(new Answer { ID = 14, AnswerText = "c. if ( expression ){}" });
q1.Answers.Add(new Answer { ID = 15, AnswerText = "d. expression if" });
evalVM.Questions.Add(q1);

return View(evalVM);
}

[HttpPost]
public ActionResult ifStatement(Evaluation model)
{
int score = 0;

if (ModelState.IsValid)
{
using (UsersContext db = new UsersContext())
{
foreach (var q in model.Questions)
{
var qId = q.ID;

List<string> listSelectedAnswer = new List<string>();

listSelectedAnswer.Add("14");
listSelectedAnswer.Add("19");
listSelectedAnswer.Add("22");
listSelectedAnswer.Add("25");
listSelectedAnswer.Add("28");
listSelectedAnswer.Add("33");

foreach (string answer in listSelectedAnswer)
{
foreach (var answer2 in model.Questions)
{
if (answer == answer2.SelectedAnswer)
{
score = score + 3;
}
}
}

model.Score = score;

ViewBag.score = model.Score;

if (score > 0)
{
return View("results");
}
else
{
//score = 0;
//return Content("Please check all answers have been submitted!");
return Content("Error, please ensure all questions have been answered. You may use the back button to continue the Quiz."); //PRG Pattern
}
}
}
}

model.setScore(score);
return View("ThankYou");
}

Leaderboard-Controller

public class LeaderboardController : Controller
{
UsersContext db = new UsersContext();
//
// GET: /Leaderboard/

TutorialEntities t = new TutorialEntities();
Evaluation e = new Evaluation();

public ActionResult Index()
{
// Evaluation ev = new Evaluation();
// var tutorial = t.Evaluations.ToList();
//ViewBag.Scores = t.Evaluations.Select(a => a.Score).ToList();
//ViewBag.Scores = e.getScore();
//ViewBag.Score = e.getScore();

ViewBag.Users = db.UserProfiles.ToList();
ViewBag.Scores = t.Evaluations.ToList();
return View();

}
}

Indexansicht

<h2>Leaderboard</h2>

@foreach (var item2 in ViewBag.Users)
{
<p>
Score: @ViewBag.Score
</p>
}

@foreach (var item in ViewBag.Users)
{
<p>
UserID: @item.UserId
<br />
UserName: @item.UserName
<br />
</p>
}

Alles, was auf der Seite angezeigt wird, wenn ich diese Ansicht gehe, istDer Name der Personen, die auf meiner Website registriert sind, und ihre ID, aber die Punktzahl ist leer! Ich kann nicht scheinen, meinen Kopf herumzureißen. Ich habe zahlreiche Möglichkeiten ausprobiert, aber es scheint, dass es nicht den Score erkennt, der in der ifstatement-Methode initialisiert wird

Antworten:

0 für die Antwort № 1

Ihr Controller setzt viewbag.scores, aber Ihre Ansicht versucht, auf viewbag.score zuzugreifen?