通过MVC中的颜色编码来区分从数据库加载的问题

时间:2016-01-08 19:14:38

标签: c# html entity-framework model-view-controller

我将所有问题加载到模型中,然后加载到db。

我在问题的颜色编码方面遇到了问题。 我在数据库中有一个表格,我可以从中获得所有问题。

这是我正在使用的方法

  public List<QuestionAnswerModel> GetQuestionsbyAppId(int appId, string purpose = "XXX")
        {
            using (var context = new someEntities())
            {
                var data = (from q in context.Questions
                            join aq in context.Application_Question_Mapping.Where(a => a.ApplicationId == appId) on q.QuestionId equals aq.QuestionId into answer
                            from an in answer.DefaultIfEmpty()
                            where q.Purpose == purpose
                            select new QuestionAnswerModel
                            {
                                QuestionId = q.QuestionId,
                                QuestionText = q.QuestionText,
                                SelectedAnswer = an == null ? String.Empty : an.Answer,
                                QuestionOptions = q.QuestionOptions,
                                Comments = (an == null) ? string.Empty : an.Comments,
                                AnsweredBy = an == null ? null : an.AnsweredBy,
                                AnswerDateTime = an == null ? null : an.AnsweredTime,
                            }).ToList();

                return data;
            }
        }

在HTML中我正在显示问题

 @foreach (var question in Model)
    {
        <div class="whiteContainer pad-10 pull-left col-lg-15" style="width: 95%; padding: 5px; margin-bottom: 3px">
            <div class="form-group">
                <input type="hidden" value="@question.QuestionId" name="QuestionId" id="QuestionId" />
                <label class="label-reports">@question.QuestionText</label>
                <br>
                @foreach (var ans in question.QuestionOptions.Split('|'))
                {
                    if (!string.IsNullOrWhiteSpace(question.SelectedAnswer) && ans == question.SelectedAnswer)
                    {
                        <label class="radio-inline">
                            <input type="radio" @((ViewBag.UserId != null && ViewBag.UserId == question.AnsweredBy) || (question.AnsweredBy == null) ? "" : "disabled") checked="checked" name="@string.Format("inlineRadioOptions-{0}", question.QuestionId)" id="@string.Format("{0}{1}", question.QuestionId, question.SelectedAnswer)" value="@ans"> @ans
                        </label>
                    }
                    else
                    {
                        <label class="radio-inline">
                            <input type="radio" @((ViewBag.UserId != null && ViewBag.UserId == question.AnsweredBy) || (question.AnsweredBy == null) ? "" : "disabled") name="@string.Format("inlineRadioOptions-{0}", question.QuestionId)" id="@string.Format("{0}{1}", question.QuestionId, question.SelectedAnswer)" value="@ans"> @ans
                        </label>
                    }
                }
                <br />
                <label class="label-reports" >Comments</label>
                <input @((ViewBag.UserId != null && ViewBag.UserId == question.AnsweredBy) || (question.AnsweredBy == null) ? "" : "disabled") maxlength="100" type="text" class="form-control" style="width: 900px !important" for="comments" value="@question.Comments" />
            </div>

        </div>
    }

通过这个我能够得到所有问题现在问题是我必须对一些问题进行颜色编码(比如第一个问题和第十个问题)

任何人都可以建议一种方法来做到这一点。

由于

2 个答案:

答案 0 :(得分:1)

对于什么决定问题是否是不同的颜色存在困惑。但是,根据OP:

&#34;类似于他们希望前5个问题是红色,接下来5个是蓝色,我有一个来自db表的questionid基于它们我想要为它着色& #34;

考虑到这一点,您只需在Razor中添加if语句即可确定颜色。

@if (question.questionId <= 5)
{
    <div class="redContainer pad-10 pull-left col-lg-15" style="width: 95%; padding: 5px; margin-bottom: 3px">
}
else
{
    <div class="blueContainer pad-10 pull-left col-lg-15" style="width: 95%; padding: 5px; margin-bottom: 3px">
}

答案 1 :(得分:0)

您需要回复给您指定规格的人,并告诉他们问题模型中需要另外一个可用于确定颜色的属性。

如果您将问题4,5和6标记为红色,当有人在数据上方或之间插入新问题时会发生什么?你必须改变代码!代码应该完成,忘记,永远不需要再改变!