Список <string>переплет - PullRequest
       3

Список <string>переплет

1 голос
/ 24 февраля 2012

Я читал сотни постов в блогах ASP.NET и вопросы о StackOverflow, но не могу найти решение этой (по-видимому) простой проблемы. Вот упрощенная версия:

Вопрос класса

public class Question
{
    public int QuestionId { get; set; }
    public string QuestionBody { get; set; }
    public List<string> Answers { get; set; }
}

У меня есть простая форма для создания объекта Вопроса. Я знаю, что нет автоматического редактора для коллекций, поэтому я попробовал:

В моем виде:

<div class="editor-field">
     @Html.TextBox("Answers")
     @Html.TextBox("Answers")
     @Html.TextBox("Answers")
</div>

В моем контроллере:

public ActionResult Create(Question question, List<string> Answers)
 ...

Ответы правильно передаются, но они не привязываются к моей модели!

Вопрос № 1 : Существует ли способ автоматического связывания этого списка строк со списком строк, содержащихся в моей модели Вопросов?

Затем я попытался «заставить» этот Список быть списком в моей модели, выполнив:

   question.Answers = Answers;
   db.Questions.Add(question);
   db.SaveChanges();

Но моя коллекция всегда передается как пустая. Я думаю, что это связано с привязкой и проверкой модели ASP.NET MVC.

Итак, Вопрос # 2 : Существует ли способ «изменить» мой вопрос объект непосредственно перед его сохранением в базе данных с помощью db.SaveChanges ()?

Спасибо.

1 Ответ

0 голосов
/ 24 февраля 2012

вам нужно будет создать шаблон редактора для вашего списка, см. Здесь:

Шаблоны редактора для списка

или вы можете просто поставить

<div class="editor-field">
     @Html.TextArea("Answers")
</div>

, тогда возвращаемая информация поступит в виде строки, а затем вы можете разбить эту строку на строку и составить список с использованием расширений Linq:

public ActionResult Create(Question question, string answers)
{
    var answerList = answers.Split('\n').ToList();
     question.Answers = answerList;
     db.Questions.Add(question);
    db.SaveChanges();
}
...