Связать флажок с текстовым полем - PullRequest
0 голосов
/ 30 августа 2018

У меня есть рабочий код чекбокса, и он правильно сохраняется в базе данных, но вдруг им захотелось иметь примечание / текстовое поле для каждого чекбокса, я смог заполнить текстовое поле флажком, но он не сохраняется в моей базе данных. как я могу это сделать?

вот моя модель: ServiceRequestForm и контрольный список M: M

 public ServiceRequestForm()
    {
        this.checkLists = new HashSet<checkList>();
    }


 public class checkList
    {
    public checkList()
    {
        this.ServiceRequestForms = new HashSet<ServiceRequestForm>();
    }
    public int checkListId { get; set; }
    public string checkList1 { get; set; }
    public virtual ICollection<ServiceRequestForm> ServiceRequestForms { get; set; }
    }

 ** VIEW MODEL// NOT MAPPED IN THE DATABASE**
 public class srfChecklistVM
   {
    [Key]
    public int checkListId { get; set; }
    public string checkList1 { get; set; }
    public bool Assigned { get; set; }
    public string remarks { get; set; }
   }

Мне нужно иметь текстовое поле для каждого флажка и успешно сохранить его в базе данных.

мой контроллер:

 public ActionResult Create(ServiceRequestForm serviceRequestForm, string[] selectedChecklist)
    {
        if (selectedChecklist != null)
        {
            serviceRequestForm.checkLists = new List<checkList>();
            foreach (var check in selectedChecklist)
            {
                var checkToAdd = db.checkLists.Find(int.Parse(check));
                serviceRequestForm.checkLists.Add(checkToAdd);
            }
        }
            db.ServiceRequestForms.Add(serviceRequestForm);
            db.SaveChanges();
            PopulateAssignedData(serviceRequestForm);
     }

     //Populate checklist
    private void PopulateAssignedData(ServiceRequestForm servicerequestform)
    {
        var allchecklist = db.checkLists;
        var srfchecklist = new HashSet<int>(servicerequestform.checkLists.Select(b => b.checkListId));
        var viewModel = new List<srfChecklistVM>();
        foreach (var check in allchecklist)
        {
            viewModel.Add(new srfChecklistVM
            {
                checkListId = check.checkListId,
                checkList1 = check.checkList1,
                Assigned = srfchecklist.Contains(check.checkListId)
            });
        }
        ViewBag.checkLists = viewModel;
    }

HTML

<tr>
@{
  <td colspan="2"><a href="#" class="toggler" data-prod-cat="1"><i class="fa fa-window-maximize" id="expand"></i><label>&nbsp; CheckList</label></a></td>
  <td colspan="2"><label>Remarks</label></td>
  int cnt = 0;

  List<SRF.Models.srfChecklistVM> checklists = ViewBag.checkLists;
  foreach (var check in checklists)
  {
    if (cnt++ % 1 == 0)
    {
     @:</tr><tr class="cat1" style="display:none">
    }
     @:
     <td colspan="2">
     <input type="checkbox" name="selectedChecklist" value="@check.checkListId" class="largerCheckbox"
      @(Html.Raw(check.Assigned ? "checked=\"checked\"" : "")) />
     @check.checkList1
     </td>
     @:
     //textbox for remarks was populated but does not save in database
     <td colspan="2"><input type="text" name="selectedChecklist" value="@check.remarks"></td>
     }
     @:</tr>
     }

Во-первых, я хочу знать, какой будет моя новая модель, во-вторых, как я могу ее заполнить, и, наконец, как сохранить ее в базе данных. Любая помощь будет принята с благодарностью!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...