2012-06-27 5 views
0

Я пытаюсь создать страницу вопросов и ответов. В котором я добавляю вопрос через текстовое поле и хочу добавить 4 текстовых поля, чтобы получить ответ. Я использую эту модель.Как добавить IList <> в ASP.NET MVC-модель?

public class Question 
    { 
     public virtual int ID { get; set; } 
     public virtual QPad QPad { get; set; } 
     [Display(Name = "Add Question")] 
     public virtual string QuestionText { get; set; }   
     [Display(Name = "Add Options")] 
     public virtual IList<string> AnswerOption { get; set; } 
    } 

Но теперь ввиду Создания действия пользователя из QuestionController

Моего контроллера:

[HttpPost] 
     public ActionResult Index(int qId, Question ques) 
     { 
      if (ModelState.IsValid) 
      { 
       var QPads = _db.QPads.Single(r => r.ID == qId); 
       QPads.Questions.Add(ques); 
       _db.SaveChanges(); 
       return RedirectToAction("Index", "QPad"); 
      } 
      else 
      { 
       return View(ques); 
      } 
     } 

Я хочу, чтобы добавить редактор для текста и вариантов вопроса, я использую

<div class="editor-label"> 
      @Html.LabelFor(model => model.QuestionText) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.QuestionText) 
      @Html.ValidationMessageFor(model => model.QuestionText) 
     </div> 
/// ?????What for 4 Options boxes///////? 

Я не могу добавить дополнительные поля. Я использую правильный подход в моделях или должен что-то изменить?

или я могу настроить этот пользователь сам, сколько вариантов он хочет добавить?

Просьба предложить?

ответ

1

Если для использования всегда разрешено добавлять четыре варианта, я могу попробовать что-то вроде этого.

<div class="editor-label"> 
    @Html.LabelFor(model => model.QuestionText) 
</div> 
<div class="editor-field"> 
    @Html.EditorFor(model => model.QuestionText) 
    @Html.ValidationMessageFor(model => model.QuestionText) 
</div> 
@for(int i = 0; i < 4; i++) 
{ 
    <div class="editor-field"> 
    @Html.EditorFor(model => model.AnswerOption[i]) 
    @Html.ValidationMessageFor(model => model.AnswerOption[i]) 
    </div> 
} 
+0

я устал это одно, но IList <> элементы не сохраняются не где ... Хотя его работы, но нигде не сохраняется. Таблица БД для Вопроса (ID, QuestionText, QPad_ID) ... так что насчет IList <> элементов в БД? – Man8Blue

+0

Можете ли вы опубликовать действие контроллера, в котором вы сохраняете? – VJAI

+0

Только что обновленный контроллер в действии – Man8Blue

0

Когда вы говорите «коробки с опциями», я предполагаю, что вы имеете в виду радиокнопки. Если это так, вы можете использовать помощник RadioButton Html, что-то вроде этого.

<div class="editor-field"> 
    @foreach(var myValue in Model.AnswerOptions) { 
     @Html.RadioButton("NAME_OF_LIST_FOR_ANSWERS", myValue) 
    } 
</div> 
0

Вы можете подумать о добавлении объекта AnswerOption в свою модель данных, чтобы вы могли определить, сколько опций имеет каждый вопрос.

Тогда вы могли бы сделать что-то вроде

foreach(var option in model.options){ 
@Html.EditorFor(option); 
@Html.ValidationMessageFor(option); 
} 
+0

его не опция (переключатель) его текстовые поля – Man8Blue

Смежные вопросы