Получение значения checKbox при публикации в MVC2 - PullRequest
1 голос
/ 04 апреля 2011

Я пытаюсь отобразить список динамических флажков и позволить пользователю выбрать один или несколько.После возвращения в контроллер мне нужно будет взять идентификаторы всех проверенных и записать запись для каждого в базу данных.

Ниже приведены фрагменты кода, которые относятся к этому.

DTO

public class OfficeVisitPartOfBodyDisplay
{
    public int PartOfBodyId { get; set; }
    public string PartOfBodyName { get; set; }
    public bool PartOfBodyChecked { get; set; }
}

Модель

public class OfficeVisitModel
{
    public OfficeVisitEntity OfficeVisit { get; set; }
    public TList<PartOfBodyEntity> PartOfBodies { get; set; }
    public TList<OfficeVisitPartOfBodyEntity> OfficeVisitPartOfBodies { get; set; }
    public List<OfficeVisitPartOfBodyDisplay> OfficeVisitPartOfBodyDisplays { get; set; }
    public string PatientName { get; set; }
}

Представление (рассматриваемая часть)

<div data-role="fieldcontain">
    <fieldset data-role="controlgroup">
    <legend>Pain Area(s):</legend>
        <% foreach (OfficeVisitPartOfBodyDisplay officeVisitPartOfBodyDisplay in Model.OfficeVisitPartOfBodyDisplays)
                { %>
                    <label for="partofbodydisplay<%= officeVisitPartOfBodyDisplay.PartOfBodyId %>"><%= officeVisitPartOfBodyDisplay.PartOfBodyName%></label>
                    <input type="checkbox" id="partofbodydisplay<%= officeVisitPartOfBodyDisplay.PartOfBodyId%>" name="partofbodydisplay" value="<%= officeVisitPartOfBodyDisplay.PartOfBodyName%>" />
        <% } %>                 
    </fieldset>
</div>

Контроллер, OfficeVisitPartOfBodyDisplays в модели и partofbodyDisplay всегда возвращаютсябез данных.

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult ActivePainArea(OfficeVisitModel model, OfficeVisitPartOfBodyDisplay[] partofbodydisplay, string submitButton)
{
    switch (submitButton)
    {
        case "Save":
            model.Message = "Save Coming Soon";
            return View(model);
        case "Cancel":
            model.Message = "Cancel Coming Soon";
            return View(model);
        case "Complaint":
            return RedirectToAction("ActiveComplaint", new { patientId = model.OfficeVisit.PatientId, readOnly = false });
        case "Patient History":
            model.Message = "Patient History Coming Soon";
            return View(model);
            //return RedirectToAction("ActivePatientHistory", new { patientId = model.OfficeVisit.PatientId });
        default:
            return View(model);
    }
}

1 Ответ

1 голос
/ 04 апреля 2011

попробуй:

Контроллер:

public ActionResult ActivePainArea(OfficeVisitModel officeVisitPartOfBodyDisplay, string submitButton) {

Вид:

<div data-role="fieldcontain">
    <% using (Html.BeginForm()) { %>
    <fieldset data-role="controlgroup">
      <legend>Pain Area(s):</legend>
      <% var i = 0; %>
      <% foreach (var officeVisitPartOfBodyDisplay in Model.OfficeVisitPartOfBodyDisplays) { %>
      <label for="partofbodydisplay<%= officeVisitPartOfBodyDisplay.PartOfBodyId %>">
        <%= officeVisitPartOfBodyDisplay.PartOfBodyName%></label>
        <%: Html.CheckBox("OfficeVisitPartOfBodyDisplays[" + i.ToString() + "].PartOfBodyChecked", officeVisitPartOfBodyDisplay.PartOfBodyChecked)%>
        <% i++; %>
      <% } %>
      <input type="submit" value="save" />
    </fieldset>
    <% } %>
  </div>

Также вы можете обратиться к этой странице для получения дополнительной информации: Фил Хакед, привязка модели к списку

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