C# 如何为Blazor服务器中的所有单选按钮存储并向相应单选按钮显示所选值结果

C# 如何为Blazor服务器中的所有单选按钮存储并向相应单选按钮显示所选值结果,c#,asp.net-core,radio-button,blazor,C#,Asp.net Core,Radio Button,Blazor,这里我有一个简单的多选问答blazor服务器应用程序,用户可以从问题的4个答案选项中选择一个答案,如果答案正确,则显示正确消息,如果错误,则显示错误消息。 现在的问题是,当我选择新问题的答案选项时,之前问题的正确答案或错误答案消息不会显示给相应的问题 任何帮助都会被拒绝。非常感谢。 布莱奥是Mcq剃须刀 <style> .hide { display: none !important; } .show { display

这里我有一个简单的多选问答blazor服务器应用程序,用户可以从问题的4个答案选项中选择一个答案,如果答案正确,则显示正确消息,如果错误,则显示错误消息。

现在的问题是,当我选择新问题的答案选项时,之前问题的正确答案或错误答案消息不会显示给相应的问题

任何帮助都会被拒绝。非常感谢。
布莱奥是Mcq剃须刀

<style>
  .hide {
         display: none !important;
        }

  .show {
         display: initial !important;
        }
</style>
@{
    int quizIndex = 0;
 }
@foreach (var item in questions)
{
<p>@item.QuestionDetail</p>

@if (item.QuestionAndAnswerId == questionId)
{
    <p class="@HideShowCss">
        @if (isCorrect == 1)
        {
            <span class="badge badge-success">Correct Answer</span>
        }
        else
        {
            <span class="badge badge-danger">Wrong Answer</span>
        }
</p>
}
<div class="form-check">
    <label class="form-check-label">
        <input type="radio" class="form-check-input" value="@item.Option1, @item.QuestionAndAnswerId" @onchange="GetRadioButtonValue" name="@quizIndex">@item.Option1
     </label>
</div>
<div class="form-check">
    <label class="form-check-label">
        <input type="radio" class="form-check-input" value="@item.Option2, @item.QuestionAndAnswerId" @onchange="GetRadioButtonValue" name="@quizIndex">@item.Option2
    </label>
</div>
<div class="form-check">
    <label class="form-check-label">
        <input type="radio" class="form-check-input" value="@item.Option3,@item.QuestionAndAnswerId" 
        @onchange="GetRadioButtonValue" name="@quizIndex">@item.Option3
    </label>
</div>
<div class="form-check">
    <label class="form-check-label">
        <input type="radio" class="form-check-input" value="@item.Option4,@item.QuestionAndAnswerId" @onchange="GetRadioButtonValue" name="@quizIndex">@item.Option4
     </label>
</div>

    quizIndex++;
}

.隐藏{
显示:无!重要;
}
.表演{
显示:初始!重要;
}
@{
int-quizIndex=0;
}
@foreach(问题中的var项目)
{
@项目.问题详情

@如果(item.QuestionAndAnswerId==questionId) {

@如果(isCorrect==1) { 正确答案 } 其他的 { 错误答案 }

} @项目1.选择1 @项目1.选择2 @项目3.选择3 @项目4.选择4 quizIndex++; }

下面是我的代码
public List<QuestionAndAnswer> questions = new List<QuestionAndAnswer>();
public string HideShowCss;
public int isCorrect;
public int questionId;
protected override void OnInitialized()
{
    var list = db.QuestionAndAnswer.ToList();
    HideShowCss = "hide";
    questions = list;
}
public void GetRadioButtonValue(ChangeEventArgs args)
{
    
    var getValue = args.Value.ToString();
    var splitValue = getValue.Split(",");
    var getSelectedValue = splitValue[0];
    var getQuestionId = splitValue[1];
    int.TryParse(getQuestionId, out int QuestionId);
    var getAnswer = db.QuestionAndAnswer.Where(x => x.QuestionAndAnswerId == QuestionId).FirstOrDefault().Answer;
    if (getSelectedValue == getAnswer)
    {
        questionId = QuestionId;
        HideShowCss = "show";
        isCorrect = 1;

    }
    else
    {
        questionId = QuestionId;
        HideShowCss = "show";
        isCorrect = 2;
    }
}
公共列表问题=新列表();
公共字符串隐藏CSS;
公德心不正;
公共问题ID;
受保护的覆盖无效OnInitialized()
{
var list=db.QuestionAndAnswer.ToList();
HideShowCss=“隐藏”;
问题=列表;
}
public void GetRadioButtonValue(ChangeEventArgs args)
{
var getValue=args.Value.ToString();
var splitValue=getValue.Split(“,”);
var getSelectedValue=splitValue[0];
var getQuestionId=splitValue[1];
int.TryParse(getQuestionId,out int QuestionId);
var getAnswer=db.QuestionAndAnswer.Where(x=>x.QuestionAndAnswerId==QuestionId.FirstOrDefault().Answer;
如果(getSelectedValue==getAnswer)
{
questionId=questionId;
HideShowCss=“show”;
isCorrect=1;
}
其他的
{
questionId=questionId;
HideShowCss=“show”;
isCorrect=2;
}
}

这是您的答案……复制并测试它,检查代码,然后告诉我您还需要什么

@page "/"

@foreach (var question in questions)
{
    <p>
         <span>@question.Title</span>
    

        @foreach (var answer in question.Answers)
        {
        <div class="form-check">
        <label class="form-check-label">

        <input type="radio" class="form-check-input" value="@answer.Text" @onchange="OnChange" 
        name="@question.ID" id="@answer.Text" 
        checked="@(question.SelectedAnswer?.Equals(answer.Text,StringComparison.OrdinalIgnoreCase))" />@answer.Text" 
        
        </label>
        

        </div>
        }
      
            @if (question.IsCorrectAnswer == null  )
            {
                <span class="badge badge-success"></span>
            }
            else if((bool) question.IsCorrectAnswer)
            {
                <span class="badge badge-success">Correct Answer</span>
            }
            else
            {
               <span class="badge badge-danger">Wrong Answer</span>
            }
            
    </p>
    
}


@code {


    private void OnChange(ChangeEventArgs args)
    {
      
       var selectedAnswer = args.Value.ToString();

        var data = (from question in questions
                     from answer in question.Answers
                     where answer.Text == selectedAnswer
                          select new { answer.QuestionID, answer.IsCorrect }).First();

        var _question = (from question in questions
                         where question.ID == data.QuestionID
                         select question).First();

        _question.SelectedAnswer = selectedAnswer;


        _question.IsCorrectAnswer = data.IsCorrect;
             
    }

  
    private List<Question> questions = new List<Question> { new Question{ID = 1, SelectedAnswer="", Title = "fervid means: ", 
                                    Answers = new List<Answer>
                                              { new Answer {ID = 1, Text = "thin", IsCorrect = false, QuestionID = 1},
                                                new Answer {ID = 2, Text = "hot", IsCorrect = true, QuestionID = 1},
                                                new Answer {ID = 3, Text = "bare", IsCorrect = false, QuestionID = 1},
                                                new Answer {ID = 4, Text = "fast", IsCorrect = false, QuestionID = 1}} 
                                    },
                                new Question{ID = 2, Title = "pallid means: ", 
                                    Answers = new List<Answer>
                                              { new Answer {ID = 1, Text = "average", IsCorrect = false, QuestionID = 2},
                                                new Answer {ID = 2, Text = "quality", IsCorrect = false, QuestionID = 2},
                                                new Answer {ID = 3, Text = "fleeting", IsCorrect = false, QuestionID = 2},
                                                new Answer {ID = 4, Text = "colorless", IsCorrect = true, QuestionID = 2}} 
                                    }};

    public class Question
    {
        public int ID {get;set;}
        public string Title {get;set;}
        public bool? IsCorrectAnswer = null;
        public string SelectedAnswer { get; set; } 
        public List<Answer> Answers  {get;set;} = new List<Answer>{};
    }

    public class Answer
    {
        public int ID {get;set;}
        public string Text {get;set;}
        public bool IsCorrect {get;set;}
        public int QuestionID {get;set;}

    }

}
@page/“
@foreach(问题中的var问题)
{

@问题.标题
@foreach(var问题答案。答案)
{
@答复:“文本”
}
@if(question.IsCorrectAnswer==null)
{
}
else if((bool)问题.iscorrect答案)
{
正确答案
}
其他的
{
错误答案
}

} @代码{ 私有void OnChange(ChangeEventArgs args) { var selectedAnswer=args.Value.ToString(); var数据=(来自问题中的问题 从问题的答案。答案 其中answer.Text==selectedAnswer 选择新的{answer.QuestionID,answer.IsCorrect}); var_问题=(来自问题中的问题 其中question.ID==data.QuestionID 选择问题); _question.SelectedAnswer=SelectedAnswer; _question.IsCorrect答案=data.IsCorrect; } 私人列表问题=新列表{新问题{ID=1,SelectedAnswer=“”,Title=“fervid”表示:“, 答案=新列表 {新答案{ID=1,Text=“thin”,IsCorrect=false,QuestionID=1}, 新答案{ID=2,Text=“hot”,IsCorrect=true,QuestionID=1}, 新答案{ID=3,Text=“bare”,IsCorrect=false,QuestionID=1}, 新答案{ID=4,Text=“fast”,IsCorrect=false,QuestionID=1} }, 新问题{ID=2,Title=“pallid意味着:”, 答案=新列表 {新答案{ID=1,Text=“average”,IsCorrect=false,QuestionID=2}, 新答案{ID=2,Text=“quality”,IsCorrect=false,QuestionID=2}, 新答案{ID=3,Text=“fleeting”,IsCorrect=false,QuestionID=2}, 新答案{ID=4,Text=“无色”,IsCorrect=true,QuestionID=2} }}; 公开课问题 { 公共int ID{get;set;} 公共字符串标题{get;set;} 公共bool?IsCorrectAnswer=null; 公共字符串SelectedAnswer{get;set;} 公共列表回答{get;set;}=新列表{}; } 公开课答案 { 公共int ID{get;set;} 公共字符串文本{get;set;} 公共bool IsCorrect{get;set;} public int QuestionID{get;set;} } }
几天前你不是问了同样的问题并得到了一些答案吗?如果是这样,你应该解释一下自上次问起你做了什么改变。@sudip chand,千言万语抱歉…我已经忘记了你的问题。请放心,今晚你会在知道你的答案已经提供的情况下上床睡觉。是的,我已经问过了但没有一个答案works@enet:谢谢你,非常感谢你,这解决了我的问题,一件事是数据中的问题中的
,它用于什么?你用它来加入还是其他什么?还有一件事,你能为我提供引导分页的代码吗?在这件事中,我已经实现了BlazorPagination fr