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

本文关键字:数据库 加载 问题 编码区 MVC 颜色 通过 | 更新日期: 2023-09-27 18:29:36

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

我对问题的颜色编码有问题。我在数据库中有一个表,我从中得到了所有的问题。

这是我使用的方法

  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>
    }

通过这个,我现在可以得到所有的问题,问题是我必须对一些问题进行颜色编码(比如第一个问题和第10个问题)

有人能建议一种方法吗?

感谢

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

在判断问题是否为不同颜色的问题上存在混淆。然而,根据OP:

"这类似于说他们希望前5个问题是红色,下5个是蓝色,我有一个来自数据库表的questionid,基于它们,我想给它上色"

考虑到这一点,您可以简单地在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">
}

您需要回到给您提供规范的人那里,告诉他们问题模型中需要另一个属性来确定颜色。

如果你把问题4、5和6涂成红色,当有人在数据中的上面或中间插入一个新问题时会发生什么?你必须更改代码!应该做的代码,忘记了,再也不需要更改了!