2015-05-09 2 views
0

жаль, что я новичок в MVC4. Im строит систему оценки mvc4.MVC 4 Рейтинговая система

Во-первых, я был создан в целях ввода поля рейтинг вопросов и хранить информацию в рейтинге дб, как показано ниже:

Rating Question Input 
============================== 
Question : [ What Fruit You Like? ] 
Sub Question : Apple ; Orange ; Grapes 
Number of Radio Button : [3] 
Rating Header : Hate ; Like ; Very Like 

Мои Ratingdb поле:

public class RatingInput 
    { 
     public int Id { get; set; } 
     public int QuestionId { get; set; } 
     public string Question { get; set; } 
     public string Subquestion { get; set; } 
     public int NumberRadioButton { get; set; } 
     public string ratingheader { get; set; } 
    } 

Как было данные смотреть как в db:

Question    | Subquestion   | NumberRadioButton | ratingheader 
What Fruit you Like? | Apple;Orange;Grapes |   3   | Hate;Like;Very Like 

Как создать отдельную строку в таблице для вопроса и переключателя ? иллюстрируют выход, как показано ниже:

1. What Fruit You Like ? 

        Hate  Like  Very Like 
Apple    []  []   [] 
Orange   []  []   [] 
Grapes   []  []   [] 

Мой рейтинг образец Выходной код страницы:

@foreach (var item in Model) 
    { 
     <tr> 

      <td> 
       @Html.DisplayFor(modelItem => item.Question) 
      </td> 
      <td> 
       @Html.DisplayFor(modelItem => item.SubQuestion) *Need Help 
      </td> 
      <td> 
       @Html.DisplayFor(modelItem => item.NumberRadioButton) *Need Help 
      </td> 
      <td> 
       @Html.DisplayFor(modelItem => item.ratingheader) *Need Help 
      </td> 

     </tr> 
    } 
+1

Вы хотите иметь 3 переключателя для каждого фрукта? –

+0

Привет, Стивен, да. –

+0

Затем вам нужно создать модель представления со свойствами, необходимыми для визуализации представления. Я добавлю ответ через час или около того. –

ответ

2

Вам нужно будет создать вид модели, чтобы представлять, что вы хотите отобразить/редактировать, который может выглядеть

public class SubQuestionVM 
{ 
    public int ID { get; set; } 
    public string Text { get; set; } 
    public string Rating { get; set; } 
} 
public class QuestionVM 
{ 
    public int ID { get; set; } 
    public string Text { get; set; } 
    public List<SubQuestionVM> SubQuestions { get; set; } 
} 

Затем в контроллере, инициализировать новую коллекцию QuestionVM и передать его мнению

public ActionResult Edit() 
{ 
    List<QuestionVM> model = new List<QuestionVM>(); 
    // Populate it from the database, but for testing 
    model.Add(new QuestionVM() 
    { 
    ID = 1, 
    Text = "What Fruit You Like ?", 
    SubQuestions = new List<SubQuestionVM>() 
    { 
     new SubQuestionVM() { ID = 1, Text = "Apple" }, // include Rating="Hate" (or some value) if you want a default radio button selected 
     new SubQuestionVM() { ID = 2, Text = "Orange" }, 
     new SubQuestionVM() { ID = 3, Text = "Grapes" } 
    } 
    }); 
    return View(model); 
} 

и в представлении

@model List<yourAssembly.QuestionVM> 
@using (Html.BeginForm()) 
{ 
    for(int i = 0; i < Model.Count; i++) 
    { 
    @Html.HiddenFor(m => m[i].ID) 
    @Html.DisplayFor(m => m[i].Text) 
    for(int j = 0; j < Model[i].SubQuestions.Count; j++) 
    { 
     @Html.HiddenFor(m => m[i].SubQuestions[j].ID) 
     @Html.DisplayFor(m => m[i].SubQuestions[j].Text) 
     var id = string.Format("Hate-{0}", Model[i].SubQuestions[j].ID); 
     @Html.RadioButtonFor(m => m[i].SubQuestions[j].Rating, "Hate", new { id = id }) 
     <label for="@id">Hate</label> 
     id = string.Format("Like-{0}", Model[i].SubQuestions[j].ID); 
     @Html.RadioButtonFor(m => m[i].SubQuestions[j].Rating, "Like", new { id = id }) 
     <label for="@id">Like</label> 
     // ditto for 'Very Like' 
    } 
    } 
    <input type="submit" /> 
} 

и отправить обратно в

public ActionResult Edit(List<QuestionVM> model) 

Примечание: То, что я показал здесь только основы, основанные на том, что вы включили в этот вопрос. Вероятно, вы должны сделать Rating и перечислить и/или добавить атрибут проверки [Required], чтобы гарантировать, что рейтинг выбран для каждого дополнительного вопроса.

+0

Привет, Стивен, спасибо за ваш ответ. Возьмем это как ссылку. В любом случае мне нужно получить подзапрос и количество радиокнопки из базы данных и показать ее пользователю, чтобы выбрать рейтинг. Подтверждение и количество переключателей определяется автором вопроса. Спасибо, и я попробую еще раз. :) –

+0

Что вы имеете в виду под номером _ ? Это не имеет никакого смысла. Ваша таблица подзаголовков будет иметь поля 'ID int' (PK),' Question int' (таблица FK to Questions), 'Text varchar' и' Rating varchar'. Поле рейтинга будет содержать значение «Ненависть», «Как» или «Очень похоже» в зависимости от того, какой переключатель был выбран. –

+0

Спасибо Стивену, я понял, что вы имеете в виду.Я получаю сообщение об ошибке: «Элемент модели, переданный в словарь, имеет тип« System.Collections.Generic.List'1 [RatingSystem.Models.Question] », но для этого словаря требуется элемент модели типа« RatingSystem » .Models.Question '. «Любой намек? –

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