C# 单选按钮/复选框阵列不显示保存的值
For循环post到db工作正常。从模型中保存的bool属性中检索值也可以工作。但是,当用户转到“编辑”时,视图不会在数组中显示保存的值。因此,问题是将保存的布尔值绑定到数组C# 单选按钮/复选框阵列不显示保存的值,c#,asp.net-mvc,C#,Asp.net Mvc,For循环post到db工作正常。从模型中保存的bool属性中检索值也可以工作。但是,当用户转到“编辑”时,视图不会在数组中显示保存的值。因此,问题是将保存的布尔值绑定到数组 @for (var i = 0; i < Model.Questions.Count; i++) { @Html.HiddenFor(m => m.Answers[i].QuestionID, new { id = Model.Questions[i].QuestionID })
@for (var i = 0; i < Model.Questions.Count; i++)
{
@Html.HiddenFor(m => m.Answers[i].QuestionID, new { id = Model.Questions[i].QuestionID })
@Html.HiddenFor(m => m.Answers[i].ApplicationID, new { id = Model.ApplicationID })
@Html.HiddenFor(m => m.Answers[i].QuestionText, new { id = Model.Questions[i].QuestionText })
@Html.HiddenFor(m => m.Answers[i].QuestionCategoryID, new { id = Model.Questions[i].QuestionCategoryID })
@Html.RadioButtonFor(model => model.Answers[i].ResponseBool, true) Yes
@Html.RadioButtonFor(model => model.Answers[i].ResponseBool, false) No
@Html.DisplayFor(model => model.Questions[i].QuestionText, new { @class = "col-md-2" })
}
控制器:
public ActionResult StepOne(int id)
{
var application = _applicationData.GetByID(id);
var form = _eduInfoData.GetByEdID(id);
var vm = new StepOneViewModel(application, form);
return View(vm);
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult StepOne( StepOneViewModel form)
{
try
{
var item = form.toEduInfo();
if (ModelState.IsValid && _eduInfoData.TrySave(item))
{
for (int i = 0; i < form.Answers.Count; i++)
{
_responseData.TrySave(form.ApplicationID, form.Answers[i]);
}
return RedirectToAction("StepTwo", new { id = item.ApplicationID });
}
}
catch (DataException /* dex */)
{
ModelState.AddModelError(string.Empty, "Unable to save changes. Try again, and if the problem persists contact your system administrator.");
}
return View(form);
}
public ActionResult第一步(int-id)
{
var application=\u applicationData.GetByID(id);
var form=_eduinfoda.GetByEdID(id);
var vm=新的StepOneViewModel(应用程序、表单);
返回视图(vm);
}
[HttpPost]
[ValidateAntiForgeryToken]
公共行动结果StepOne(StepOneViewModel表单)
{
尝试
{
var item=form.toEduInfo();
if(ModelState.IsValid&&u eduInfoData.TrySave(项))
{
for(int i=0;i
已解决!问题是我没有正确地收回响应。为了修复问题,我将appId和questionId传入了我的响应模型,并在那里设置了值
仍然需要进行一些重新分解,但要点如下:
public Response(int id, int qID)
{
this.ResponseBool = new ResponseRepository().GetResponse(id).Where(m => m.QuestionID == qID).Select(m => m.ResponseBool).FirstOrDefault();
}
Answers = Questions
.Select(k => new Response(stepOneSaved.ApplicationID, k.QuestionID)
{
ApplicationID = stepOneSaved.ApplicationID,
QuestionID = k.QuestionID,
QuestionCategoryID = k.QuestionCategoryID,
QuestionText = k.QuestionText,
})
.ToList();
解决了!问题是我没有正确地收回响应。为了修复问题,我将appId和questionId传入了我的响应模型,并在那里设置了值 仍然需要进行一些重新分解,但要点如下:
public Response(int id, int qID)
{
this.ResponseBool = new ResponseRepository().GetResponse(id).Where(m => m.QuestionID == qID).Select(m => m.ResponseBool).FirstOrDefault();
}
Answers = Questions
.Select(k => new Response(stepOneSaved.ApplicationID, k.QuestionID)
{
ApplicationID = stepOneSaved.ApplicationID,
QuestionID = k.QuestionID,
QuestionCategoryID = k.QuestionCategoryID,
QuestionText = k.QuestionText,
})
.ToList();
显示控制器代码,以便我们了解您的操作显示控制器代码,以便我们了解您的操作