У меня есть рабочий код чекбокса, и он правильно сохраняется в базе данных, но вдруг им захотелось иметь примечание / текстовое поле для каждого чекбокса, я смог заполнить текстовое поле флажком, но он не сохраняется в моей базе данных. как я могу это сделать?
вот моя модель: 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> 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>
}
Во-первых, я хочу знать, какой будет моя новая модель, во-вторых, как я могу ее заполнить, и, наконец, как сохранить ее в базе данных. Любая помощь будет принята с благодарностью!