C# 如何为Blazor服务器中的所有单选按钮存储并向相应单选按钮显示所选值结果
这里我有一个简单的多选问答blazor服务器应用程序,用户可以从问题的4个答案选项中选择一个答案,如果答案正确,则显示正确消息,如果错误,则显示错误消息。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
现在的问题是,当我选择新问题的答案选项时,之前问题的正确答案或错误答案消息不会显示给相应的问题 任何帮助都会被拒绝。非常感谢。
布莱奥是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