首页 文章

从视图发送对象

提问于
浏览
0

我从一个产品列表中填充了一个表,使用jquery我在表中添加了一个新行,我想要的是从这个新行创建一个新产品并将其添加到列表中 .

这是产品型号:

public class Product
    {
    public int ProductId { get; set; }
    public string ProductName { get; set; }
    public decimal Price { get; set; }
    public int ProductState { get; set; }
    }

索引模型视图我显示产品列表:

public class BillViewModel
    {
    public SelectList ClientList { get; set; }
    public int SelectedClient { get; set; }
    public SelectList ProductList { get; set; }
    public int ProductSelected { get; set; }
    public List<Product> ListProducts { get; set; }
    public List<Client> ListClients { get; set; }
    }

这是视图,隐藏字段是当我点击帖子时发送产品列表:

<table id="tabla">


    @for (int i = 0; i < Model.ListProducts.Count(); i++)
    {
        <tr>
            <td>
                @Html.DisplayFor(model => model.ListProducts[i].ProductName)
                @Html.HiddenFor(model => model.ListProducts[i].ProductName)
            </td>

        </tr>
    }       

</table>

从下拉列表中选择一个新产品,然后将该名称附加到表中:

<script type="text/javascript">
$('#submit').click(function() {
    $('#tabla').append('<tr><td>' + $('#select option:selected').text() + '</tr>');
});

问题是如何将此行(产品名称)添加到产品列表中 .

我正在考虑使用ajax或在单击添加后再进行操作并再次渲染视图 . 有没有办法通过jquery添加它而不使用ajax或转到动作链接?

2 回答

  • 0

    唯一的方法是 POST 表单,并在 ActionResult 中添加新项目 .

  • 0

    我找到了解决方案:

    我们的想法是将一行中的隐藏字段附加到表中 .

    var rowCount = $('table tr').length;
        $('#tabla').append('<tr><td> <input type="hidden" value=' + $("#select    option:selected").text() + ' name="ListProducts['+ rowCount +'].ProductName"> </td></tr>');
    

    这样做模型将获取隐藏字段的值 . 隐藏字段具有索引列表,就像mvc发送对象列表一样:

    @for (int i = 0; i < Model.ListProducts.Count(); i++)
            {
            <tr>
                <td>
                    @Html.DisplayFor(model => model.ListProducts[i].ProductName)
    
                    @Html.HiddenFor(model => model.ListProducts[i].ProductName)
                </td>
            </tr>
            }
    

    使用隐藏我将对象添加到模型的列表中 .

相关问题