/ / Przekazywanie zmiennej z jednej klasy do widoku innej klasy - asp.net-mvc

Przekazywanie zmiennej z jednej klasy do widoku innej klasy - asp.net-mvc

Mam trochę problemów z przekazaniem zmiennejscore, czyli zmienna w mojej klasie Evaluation, która jest inicjowana tutaj w mojej metodzie [httpPost] ifstatements (Model oceny) w moim kontrolerze Quiz do widoku należącego do innego kontrolera innej klasy. Kiedy wynik jest większy od zera, tj. Odpowiem poprawnie na co najmniej jedno pytanie, następuje przejście do widoku wyników i wynik jest mi pokazywany. Ale mam problem z wydrukowaniem tego wyniku w innym widoku o nazwie Index, który jest częścią mojej metody indeksu w moim kontrolerze LEADERBOARD klasy LEADERBOARD

Kontroler quizów

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");
}

Kontroler liderów

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();

}
}

Widok indeksu

<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>
}

Wszystko, co pojawia się na stronie, kiedy przechodzę do tego widoku, tonazwiska osób, które są zarejestrowane na mojej stronie i ich identyfikator, ale wynik jest pusty! Nie mogę się nad tym zastanowić Próbowałem na wiele sposobów, ale wygląda na to, że nie widzę wyniku inicjalizowanego w metodzie ifstatement

Odpowiedzi:

0 dla odpowiedzi № 1

Twój kontroler ustawia viewbag.scores, ale Twój widok próbuje uzyskać dostęp do viewbag.score?