@Aleksei_Lekomtsev

Как передать коллекцию из [HttpGet] метода во вью, а затем заполненный в [HttpPots] метод?

Всем привет.
Подскажите, пожалуйста,
Я передаю коллекцию во вью и затем возвращаю в [HttpPost] метод, но в параметре p этого метода null

Вот HttpGet

[HttpGet]
        public ActionResult Testing()
        {
            List<Test> t = new List<Test>();
            return View(t);
        }


Вот view для HttpGet метода:

@model List<Questionnaire.Models.Test>
@{
    Layout = null;
}
 
 
 
<!DOCTYPE html>
 
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Testing</title>
</head>
<body>
    @using (Html.BeginForm()){
    <div>
        
    </div>
    
<input type="submit" value="ok" />
 
    }
</body>
</html>


А вот метод HttpPost

[HttpPost]
        public ActionResult Testing(List<Test> p)
        {
            return View();
        }


Как правильно это делать и в чем может быть проблема?
  • Вопрос задан
  • 2596 просмотров
Пригласить эксперта
Ответы на вопрос 3
wkololo_4ever
@wkololo_4ever
Но, ведь вы не определили поля в форме с данными модели.
Ответ написан
Комментировать
@Aleksei_Lekomtsev Автор вопроса
Определил. Я просто не весь код выложил.

Вот get:

[HttpGet]
        public ActionResult Testing(int id)
        {
            List<UserAnswer> userAnswers = new List<UserAnswer>();
            var questions = (from question in db.Questions
                             where question.TestID == id
                             select question).ToList();
            
            foreach (var questionItem in questions)
            {
                var correctAnswers = questionItem.Answer.Split(';');
                foreach (var correctAnswer in correctAnswers)
	            {
		            userAnswers.Add(new UserAnswer{QuestionText = questionItem.Text, Answer = correctAnswer, Available = false, QuestionType = questionItem.Type});
                }
              }
            return View(userAnswers);
        }


а вот view:

@model List<Questionnaire.Models.UserAnswer>

@{
    Layout = null;
   
}



<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Testing</title>
</head>
<body>
    @using (Html.BeginForm()){
    <ol>
        
        @foreach (var item in Model)
        {
                        @Html.CheckBoxFor(m => item.Available);
        }
            
        }
    </ol>
    <input type="submit" value="Check" />
}
</body>
</html>


UserAnswer

namespace Questionnaire.Models
{
    public class UserAnswer
    {
        public string QuestionText { get; set; }
        public string QuestionType{get; set;}
        public string Answer { get; set; }
        public bool Available { get; set; }
    }
}
Ответ написан
@Deilan
@using (Html.BeginForm())
{
    <ol>
        @for(int i = 0; i < Model.Count; i++)
        {
            @Html.EditorFor(m => Model[i].Available);
        }
    </ol>
    <input type="submit" value="Check" />
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы