为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 ASP.NET MVC 中编辑分组行

如何在 ASP.NET MVC 中编辑分组行

C#
青春有我 2021-11-28 18:43:08
我正在尝试编辑编辑中显示的选定行中的所有行,但也按以下格式分组:注意:[] 代表复选框,在数据库中为 true 或 falseA. 您在服用以下药物时是否有这些症状?            Yes No   Sometimes   Not Sure  After 21 days   Indifferent(i) 扑热息痛 [] [] [] [] [] [] ...(ii) Quninne [] [] [] [] [] [] ...B. 用冷水和以下药物一起使用时,您的眼睛会闪烁吗?            Yes No   Sometimes   Not Sure  After 21 days   Indifferent(i) 维生素 C [] [] [] [] [] [] ...(ii) Quninne [] [] [] [] [] [] ,,,我的 POCO 设计是这样的:public class QuestionCategory{  public int QuestionCategoryID {get; set;}  public string Name {get; set;}  ...}public class Question{  public int ID {get; set;}  public string Name {get; set;}  public int QuestionCategoryID  {get; set;}  ...}在视图中我可以按 QuestionCategoryID 对问题进行分组,现在的问题是如何列出所有问题并单击一个按钮进行编辑。所以我决定制作一个我想要实现的线框。
查看完整描述

1 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

请参阅下面的我的解决方案。我为问题、子问题和选项创建了 3 个表。选项与父问题相关联(假设所有问题的选项都相同)。问题和子问题显示在文本框中(以使其可编辑)。您可以修改它以适合您的需要。希望这可以帮助。


这是我的观点:


 @model List<QuestionsTest.Models.QuestionModel>    

    <form method="post">

      <table class="table">

        @for (int i = 0; i < Model.Count; i++)

        {

          <tr>

            <td colspan="2">

              @Html.HiddenFor(model => Model[i].Id, new { @class = "form-control" })

              <b>  @Html.TextBoxFor(model => Model[i].Question, new { @class = "form- 

              control" })</b>

            </td>

          </tr>


          for (int j = 0; j < Model[i].SubQuestions.Count; j++)

          {

            <tr>

              <td>

                @Html.HiddenFor(model => Model[i].SubQuestions[j].Id, new { @class = 

                "form-control" })

                @Html.HiddenFor(model => Model[i].SubQuestions[j].ParentQuestionId, new { 

                @class = "form-control" })

                @Html.TextBoxFor(model => Model[i].SubQuestions[j].SubQuestion1, new { 

                @class = "form-control" })

              </td>

              <td>

                @for (int k = 0; k < Model[i].Options.Count; k++)

                {

                  @Html.RadioButtonFor(model => Model[i].Options[k].QuestionOption, 

                  Model[i].Options[k].QuestionOption)@Model[i].Options[k].QuestionOption

                }


              </td>

            </tr>

          }


        }

      </table>

      <input class="btn-block btn-success" type="submit" value="Update" />

这是我的控制器:


public ActionResult Questions()

{

  var questions = _laraTestEntities.Questions.ToList();

  var questionModel = new List<QuestionModel>();


  questions.ForEach(q =>

  {


    var subQuestions = _laraTestEntities.SubQuestions.Where(s => s.ParentQuestionId == q.Id).ToList();

    var options = _laraTestEntities.Options.ToList();


    var model = new QuestionModel

    {

      Id = q.Id,

      Question = q.Question1,

      SubQuestions = subQuestions,

      Options = options

    };


    questionModel.Add(model);

  });

  return View(questionModel);

}


[HttpPost]

public ActionResult Questions(List<QuestionModel> Model)

{

  Model.ForEach(q =>

  {

    var questionDetail = _laraTestEntities.Questions.Find(q.Id);

    if (questionDetail != null)

    {

      questionDetail.Question1 = q.Question;

      q.SubQuestions.ForEach(s =>

      {

        var subQuestionDetail = _laraTestEntities.SubQuestions.Find(s.Id);

        if (subQuestionDetail != null)

        {

          subQuestionDetail.SubQuestion1 = s.SubQuestion1;

        }

      });


      _laraTestEntities.SaveChanges();


    }

  });


  return View(Model);

}

模型:


     public class QuestionModel

  {

    public int Id { get; set; }

    public string Question { get; set; }


    public List<SubQuestion> SubQuestions { get; set; }


    public List<Option> Options { get; set; }

  }


public class SubQuestion

  {

    public int Id { get; set; }

    public int ParentQuestionId { get; set; }

    public string SubQuestion1 { get; set; }


    public virtual QuestionCategory QuestionCategory { get; set; }

  }


 public class Option

  {

    public int Id { get; set; }

    public string OptionTitle { get; set; }

  }


查看完整回答
反对 回复 2021-11-28
  • 1 回答
  • 0 关注
  • 155 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信