Catch a list in the View and move to the C #

1

I have 2 lists that come from the database, one from technician and one from suppliers. I can not get it from View and switch to Controller. And how to receive this list in the controller

Followthecodebelow:

ControllerpassinglisttoviewasViewBag

varlistaTecnicos=newBLL.Tecnico.TecnicoListar().ListarTecnicosProduto();ViewBag.listaTecnicos=listaTecnicos;

TechnicalView

<tablewidth="100%" class="table table-striped">
    <thead>
        <tr>
            <th>Cód.</th>
            <th>Técnico</th>
            <th>Quantidade</th>
            <th>Observação</th>
        </tr>
    </thead>
    <tbody>

        @{
            var cont = 0;

            for (int i = 0; i < ViewBag.listaTecnicos.Count; i++)
            {
                <tr class=".itemTecnico">
                    <td class="idTecnico">@ViewBag.listaTecnicos[i].ID_Tecnico</td>
                    <td>@ViewBag.listaTecnicos[i].Nome</td>
                    <td width="100px">@Html.TextBoxFor(model => model.QtdProdutoTecnico, new { id = "qtdProduto_" + cont, @class = "money2 form-control somarProdutoTecnico", maxlength = "5", @placeholder = "00,00" })</td>
                    <td>@Html.TextBoxFor(model => model.ObsProdutoTecnico, new { @class = "form-control" })</td>

                </tr>

                cont++;
            }
        }

    </tbody>
</table>

JavaScript JQuery

    $('#btnSalvarTecnicos').click(function () {

    var arrayTecnicos = $('.itemTecnico');
    var idDoTecnico = new Array();
    var qtdDoTecnico = new Array();
    var obsDoTecncio = new Array();
    var todos_tecnicos = new Array();

    function pegarosTecnicos() {

        for (var i = 0; i < arrayTecnicos.length; i++) {

            todos_tecnicos = {
                idDoTecnico : $('.idTecnico').val(),
                qtdDoTecnico : $('.somarProdutoTecnico').val(),
                obsDoTecncio : $('.ObsTecnico').val()
            };
        };


    };


    $.ajax({
        url: '@Url.Action("SalvarTecnicos")', // to get the right path to controller from TableRoutes of Asp.Net MVC
        dataType: "json", //to work with json format
        type: "POST", //to do a post request
        contentType: 'application/json; charset=utf-8', //define a contentType of your request
        cache: false, //avoid caching results
        data: JSON.stringify(todos_tecnicos), // passar os parametros
        success: function (data) {


        },
        error: function (xhr) {
            alert("Erro! ao Salvar os com os tecnicos, Favor Entrar em Contato com O Suporte.");
        }


    });



});

Controlelr

    public ActionResult SalvarTecnicos(DTO.Produtos ListaTecncicos)
    {
      // aqui retorna ula lista vazia
    }
  • DTO Product *

using System; using System.Collections.Generic; using System.ComponentModel;

DTO namespace {     public class Products     {

    public string QtdProdutoTecnico { get; set; }
    public string ObsProdutoTecnico { get; set; }
    public string QtdTotalTecnicos { get; set; }

    public List<DTO.Fornecedores> ListaFornecedoresProduto { get; set; }

    public List<DTO.Tecnicos> ListaTecncicos { get; set; }

    public List<DTO.ProdutoComTecnico> ProdutoComTecnico { get; set; }

} }

    
asked by anonymous 27.07.2017 / 03:22

1 answer

1

Review this path:

public class Fornecedor
{
    public int ID { get; set; }
    public string Nome { get; set; }
    public List<Tecnico> Tecnico { get; set; }
}

public class Tecnico
{
    public int ID { get; set; }
    public int FornecedorID { get; set; }
    public string Nome { get; set; }
}

Usually in my Views, my registration forms receive a DTO and an aggregated DTO list, as described above.

In the View I do the assembly as follows.

@model Fornecedor

<div class="row">
    <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12">
        <div class="form-group">
            @Html.LabelFor(model => model.Nome):
            @Html.ValidationMessageFor(model => model.Nome)
            @Html.TextBoxFor(model => model.Nome, new { @class = "form-control", maxlength = 50 })
        </div>
    </div>
</div>

@if (Model.Tecnico != null && Model.Tecnico.Count > 0)
{
    for (int i = 0; i < Model.Tecnico.Count; i++)
    {
        <div class="row">
            <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12">
                <div class="form-group">
                    @Html.HiddenFor(m => m.Tecnico[i].ID)
                    @Html.LabelFor(m => m.Tecnico[i].Nome):
                    @Html.ValidationMessageFor(m => m.Tecnico[i].Nome)
                    @Html.TextBoxFor(m => m.Tecnico[i].Nome, new { @class = "form-control", maxlength = 255 })
                </div>
            </div>
        </div>
    }
}

In Action here I charge as follows.

[HttpPost]
public ActionResult Cadastrar(Fornecedor pFornecedor)
{
    try
    {
        if (ModelState.IsValid)
        {

        }
        else
        {

        }
        return View();
    }
    catch (Exception ex)
    {
        return View();  
    }
}

When submitting MVC will deliver the entire tree, an important thing is to maintain the index sequentially, if you use JavaScript to include items on the screen, the index should be redone (0, 1, 2, 3, etc.) ).

It does not include any more code because it is the basic ASP.NET MVC framework assembly.

Rate this form to meet your needs.

    
27.07.2017 / 15:50