Добавить шаблоны редактора строка за строкой в ​​HTML-таблицу и отправить в контроллер - PullRequest
0 голосов
/ 18 января 2019

У меня есть два класса моделей Деньги и MoneyType .

денежный объект содержит Список TypeMoney свойство

В моем представлении со строго типизированными деньгами, это основное представление индекса, здесь есть html-таблица для списка объектов типа Money

Я хочу добавить объект TypeMoney в качестве строки шаблона редактора в таблицу динамически с помощью jquery, поэтому, когда пользователь хочет заполнить одну строку, он нажимает на кнопку AddMoney , тогда в этой строке отображается только одна строка. Таблица. (пользователь заполняет данные типа денег). и он снова нажимает на кнопку AddMoney , когда он хочет заполнить информацию в другой строке и т. д.

для этого я реализовал шаблон редактора и создал частичное представление _create.cshtml для этого шаблона редактора, чтобы я мог добавить этот фрагмент в виде строки

пока он не отправит все контроллеру: денежный объект данные с его коллекцией объектов typeMoney данные.

В действии index контроллера я передал модель " money " в представление Index

Моя проблема заключается в том, что когда я отправляю эту форму, список денежных объектов типа отправляется нулевым на контроллер

Как я могу добавить тип денежного объекта в коллекцию шаблонов Editor и отправить эту коллекцию без нуля в контроллер

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

модель классов

public class Money{
    public int StructureId {get; set;}
    // public enum Quarter:byte{ FirstQuarter = 1, SecondQuarter=2, 
    //  ThirdQuarter=3, FourthQuarter=4}
    public Querter Quarter{get; set;}
    public int Year {get; set;}
    public List<TypeMoney> MoneyTypes {get; set;}
}

public class TypeMoney{
    //public enum Type:byte{ Bill= 1, Coin=2}
    public Type Type{get; set;}
    //public enum Value = {one = 1, tow=2, five=5, ten=10, Etc};
    public Value Value{get; set;}
    public int Number{get; set;}

}

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

 public ActionResult Index()
 {
    ViewBag.StructureId= new SelectList(GetStructures(), "Id", "Name");
    ViewBag.Year = new SelectList(GetYears());
    ViewBag.Quater =  new SelectList(Enum.GetValue(typeof(Quarter));

    return View()
 }

 //partial view for Editor template
 public PartialViewResult _Create(Money money)
 {
     return PartialView(); 
 }
 //save money with list of typeMoney objects 
 [HttpPost]
 public ActionResult Index(Money money)
 {
     //code for save in database
 }

Вот мой редактор шаблонов

@model ProjectName.TypeMoney

<tr class="insertMoneyTr">
    <td>
        @Html.DropDownListFor(model => model.Type, null, "--selectionnez--", 
 new { @class = "typeMoney form-control" })
    </td>
    <td>
        @Html.DropDownListFor(model => model.Valeur, null, new { @class = 
        "valueMoney form-control" })

    </td>
    <td>
        @Html.TextBoxFor(model => model.Numbre, new { @class = "nombre form- 
        control" })
    </td>

    <td>
        <button class="deleteMoney btn btn-danger glyphicon glyphicon- 
        remove">
       </button>
    </td>
</tr>   

Частичное представление _create.cshtml

@model ProjectName.TypeMoney

 @Html.EditorForModel();

Код jquery для отображения частичного представления в виде строки, добавленной в таблицу

//the id of button that append editor template is AddMoney

$("#AddMoney").click(function (e) {
                e.preventDefault();

                $.ajax({
                    url: "Money/_Create",
                    type: 'Get',
                    dataType: 'html',
                    success: function (result) {
                        $("#listEspecesDiv tbody").append(result);
                    }
                });


            });
...