Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC4评分系统_C#_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

C# MVC4评分系统

C# MVC4评分系统,c#,asp.net-mvc,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 4,很抱歉,我对MVC4很陌生。 我正在建立一个mvc4评级系统 首先,我创建了一个视图来输入评级问题字段,并将信息存储到评级数据库中,如下所示: Rating Question Input ============================== Question : [ What Fruit You Like? ] Sub Question : Apple ; Orange ; Grapes Number of Radio Button : [3] Rating Header : Hate

很抱歉,我对MVC4很陌生。 我正在建立一个mvc4评级系统

首先,我创建了一个视图来输入评级问题字段,并将信息存储到评级数据库中,如下所示:

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

                  Hate     Like      Very Like
Apple             []        []          []
Orange            []        []          []
Grapes            []        []          []
My 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; }
    }
数据库中的数据是什么样子的:

Question             | Subquestion         | NumberRadioButton | ratingheader
What Fruit you Like? | Apple;Orange;Grapes |         3         | Hate;Like;Very Like
如何在表格中为问题和单选按钮生成单独的行? 输出如下所示:

Rating Question Input
==============================
Question : [ What Fruit You Like? ] 
Sub Question : Apple ; Orange ; Grapes
Number of Radio Button : [3]
Rating Header : 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>
    }
@foreach(模型中的变量项)
{
@DisplayFor(modelItem=>item.Question)
@Html.DisplayFor(modelItem=>item.SubQuestion)*需要帮助吗
@DisplayFor(modelItem=>item.NumberRadioButton)*需要帮助吗
@DisplayFor(modelItem=>item.ratingheader)*需要帮助吗
}

您将需要创建视图模型来表示您要显示/编辑的内容,可能看起来像

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; }
}
在我看来

@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" />
}
@型号列表
@使用(Html.BeginForm())
{
for(int i=0;im[i].ID)
@DisplayFor(m=>m[i].Text)
对于(int j=0;jm[i].子问题[j].ID)
@Html.DisplayFor(m=>m[i]。子问题[j]。文本)
var id=string.Format(“Hate-{0}”,模型[i]。子问题[j].id);
@RadioButton(m=>m[i]。子问题[j]。评分,“仇恨”,新的{id=id})
憎恨
id=string.Format(“Like-{0}”,模型[i]。子问题[j].id);
@RadioButton(m=>m[i]。子问题[j]。评分,“Like”,新的{id=id})
喜欢
//“非常相似”也是如此
}
}
}
并发回

public ActionResult Edit(List<QuestionVM> model)
public ActionResult编辑(列表模型)

注意:我在这里展示的只是基于您在问题中所包含内容的基础知识。您可能应该进行
评分
和枚举和/或添加
[必需]
验证属性,以确保为每个子问题选择评分

你想要每个水果有3个单选按钮吗?嗨,Stephen,没错。然后你需要创建一个视图模型,其中包含渲染视图所需的属性。我会在一小时内添加一个答案,stephen,有可能通过检测半列来生成子问题的新行吗?我正在尝试循环生成单选按钮,几乎可以工作了。。但不知道子问题。我刚看过你的编辑。您的数据库结构毫无意义,也不表示关系数据。应删除
NumberRadioButton
ratingheader
字段,并且您需要一个单独的子问题表,其中包含
QuestionID
字段,该字段是
QuestionTable
的外键(该字段应仅包含有关问题的信息(其ID、文本等)您好,Stephen,非常感谢您的回答。将作为参考。无论如何,我需要从数据库中检索子问题和单选按钮的编号,并将其显示给用户以选择评分。子问题和单选按钮的编号由问题创建者决定。谢谢,我将重试。:)单选按钮的数量是什么意思?这毫无意义。您的子问题表将包含字段
ID int
(PK)、
question int
(FK到问题表)、
Text varchar
Rating varchar
。根据选择的单选按钮,评级字段将包含“恨”、“喜欢”或“非常喜欢”的值。谢谢Stephen,我明白你的意思了。我通过引用您的代码得到一个错误:“传入字典的模型项的类型为'System.Collections.Generic.List'1[RatingSystem.Models.Question]”,但此字典需要'RatingSystem.Models.Question'类型的模型项。“有什么提示吗?那么您没有正确复制我的代码-视图的第一行是
@model List
(列表不是一个单独的对象)。很明显,您已经使它
@model yoursassembly.QuestionVM
无法分辨,因为您没有显示POST方法,但它需要
公共操作结果编辑(列表模型)
,然后您可以循环查看
模型中的项目,初始化新实例或数据模型(或从数据库中获取现有的),更新其属性,然后保存(您需要保存数据模型,而不是视图模型,假设它们不是同一类型)。我们在这里有点偏离正轨,因此如果您有进一步的问题,您应该发布一个新问题,显示实际代码并解释问题