Как получить значение динамически генерируемого флажка внутри модели в методе Post - PullRequest
0 голосов
/ 29 марта 2019

Мне нужно вернуть коллекцию отмеченных флажков при отправке формы. Проблема в том, что флажки не являются частью модели, они генерируются jquery после того, как пользователь выполнит какое-либо действие. флажки поставляются правильно на странице. Как я могу получить проверенное свойство внутри моей модели на пост-событии.

 @model Models.MainModule
    @using (Html.BeginForm("Detail", "SomeControllerName", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
            {
          @Html.HiddenFor(m => Model.SubCheckList)
         <div id="CheckList"></div>

        }

JQuery для флажка:

$(document).ready(function () {
        $("#ModID").change(function () {
            var ModId = $('#ModID').val();
            $.ajax({
                type: "GET",
                url: "/SomeController/SomeAction",
                data: { Mid: ModID },
                datatype: "json",
                traditional: true,

                success: function (data) {
                    $('#CheckList').empty();
                    $.each(data, function (key, value) {
                        var li = $('<li><input type="checkbox" name="' + key + '" id="' + value.subID + '"/>' +
                            '<label for="' + key + '"></label></li>');
                        li.find('label').text(value.subName);
                        $('#CheckList').append(li);
                    });
                }
            });

        });
    });

Модельный класс

 namespace Models
    {
        public class MainModule
        {
            public int MainID { get; set; }
            public string MainName { get; set; }
      public List<MyModule> SubCheckList { get; set; }  
        }

 public MainModule()
        {
            this.SubCheckList = new List<MyModule>();
        }       

    public class MyModule
        {
            public int id { get; set; }  

            public string name { get; set; }
        }
    }

Код контроллера:

[HttpPost]
  public ActionResult Detail(MyModule myModuleObj)
  {
    GetViewBagData();
     return View();
  }

1 Ответ

0 голосов
/ 29 марта 2019

Вы можете сделать это с помощью отправки формы AJAX.

Сначала добавьте имя для вашей формы как ваше требование.Например, 'formMainModule'

Сначала добавьте класс 'chkBxClass' к каждому флажку.Это для получения значений флажков, которые проверяются позже.

В jquery

var checkedIds = $('.chkBxClass:checkbox:checked').map(function () { return this.value; }).get().join(','); 

$.ajax({
    type: 'POST',
    data: $('#formMainModule').serialize() + '&checkedIds=' + checkedIds,
    url: '/SomeControllerName/Detail',
    success: function (result) {
             }
    });

В контроллере,

[HttpPost]
public ActionResult Detail(MyModule myModuleObj, string[] checkedIds)
{
     // Here you can add checked ids to your module
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...