Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在ajax调用中传递具有列表类型属性的对象_Javascript_C#_Jquery_Asp.net Mvc_Cart - Fatal编程技术网

Javascript 如何在ajax调用中传递具有列表类型属性的对象

Javascript 如何在ajax调用中传递具有列表类型属性的对象,javascript,c#,jquery,asp.net-mvc,cart,Javascript,C#,Jquery,Asp.net Mvc,Cart,我知道以前有人问过我,但我不明白如何用已经提供的答案来解决问题。甚至不知道在哪里写那些ModelBinder代码。因此,我将只描述我的问题。 我有一个视图是强类型的,它是一个具有列表属性(关联关系)的模型 所以,现在我的问题是如何获取AddedProductView中的数据 或者是否有其他方法将AddedProductView数据传递给控制器?? 非常感谢您的帮助。您需要了解模型绑定在MVC中是如何工作的。当您使用任何HTML帮助程序时,该控件的名称将设置为used model属性。比如说 @H

我知道以前有人问过我,但我不明白如何用已经提供的答案来解决问题。甚至不知道在哪里写那些ModelBinder代码。因此,我将只描述我的问题。 我有一个视图是强类型的,它是一个具有列表属性(关联关系)的模型

所以,现在我的问题是如何获取AddedProductView中的数据

或者是否有其他方法将AddedProductView数据传递给控制器??
非常感谢您的帮助。

您需要了解模型绑定在MVC中是如何工作的。当您使用任何HTML帮助程序时,该控件的名称将设置为used model属性。比如说

@Html.TextBoxFor(model => model.SalesSl, null, new { style = "width:120px" })
将使用
type=“text”
name=“SalesSl”
呈现输入元素,并且当您将表单发布回服务器时,使用
name=“SalesSl”
的控件值将绑定到名为
SalesSl
的模型属性

但是,当您使用以下内容时:

<td>@sIAM.ProductName</td>
@sIAM.ProductName
未创建名称设置为“模型属性名称”的控件

您需要使用for循环而不是foreach循环,在循环中,您需要对要提交回服务器的每个AddedProductView属性执行类似的操作:

<td>
    @Html.Hidden("AddedProductViews[@index].ProductName", @Model.AddedProductViews[index].ProductName);
    @Model.AddedProductViews[index].ProductName
</td>

@Html.Hidden(“AddedProductViews[@index].ProductName”,@Model.AddedProductViews[index].ProductName”);
@Model.AddedProductViews[index].ProductName
这些链接应该有帮助:


尝试使用JSON进行同样的操作!尝试了json.stringfy(),结果相同@UllasHunkacan您向我显示了$(“#SalesModForm”)的日志。抱歉,我不明白您的要求。所有相关的html都在问题中。嗯,列表是空的,因为您没有任何
用于
模型的项目。AddedProductView
非常感谢!。在这些链接和您的答案的帮助下,我终于做到了。很高兴为您提供帮助:)
 <script>
    $(document).ready(function () {
        $('#btnAddToCartMod').click(function () {
            var data = $('#SalesModForm').serialize();
            $.ajax({
                type: 'Post',
                url: '/Sales/Index',
                data: data,
                success: function () {
                    window.location = '/Sales/Index';
                }
            });
        });
    });
</script>
[HttpPost]
    public ActionResult Index(Sales sales)
    {
        //no data in sales.AddedProductViews
        //sales.AddedProductViews count = 0;
        return View();
    }
@Html.TextBoxFor(model => model.SalesSl, null, new { style = "width:120px" })
<td>@sIAM.ProductName</td>
<td>
    @Html.Hidden("AddedProductViews[@index].ProductName", @Model.AddedProductViews[index].ProductName);
    @Model.AddedProductViews[index].ProductName
</td>