Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 单选按钮/复选框阵列不显示保存的值_C#_Asp.net Mvc - Fatal编程技术网

C# 单选按钮/复选框阵列不显示保存的值

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循环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 })
            @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();

显示控制器代码,以便我们了解您的操作显示控制器代码,以便我们了解您的操作