Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.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
Asp.net mvc 在Asp.net MVC中查看不返回多个列表_Asp.net Mvc_Razor_Asp.net Mvc 5 - Fatal编程技术网

Asp.net mvc 在Asp.net MVC中查看不返回多个列表

Asp.net mvc 在Asp.net MVC中查看不返回多个列表,asp.net-mvc,razor,asp.net-mvc-5,Asp.net Mvc,Razor,Asp.net Mvc 5,我是新的网络从桌面 我有两个模型 首先 public class Item { public int Id { get; set; } public string Name { get; set; } public string Description { get; set; } public double Price { get; set; } public double Stock { get;

我是新的网络从桌面

我有两个模型

首先

    public class Item
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
        public double Price { get; set; }
        public double Stock { get; set; }
        public Category Category { get; set; }
        public string ImagePath { get; set; }
}
其次是

    public class Category
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public bool isSelected { get; set; }
    }
以及一个ViewModel,用于将其传递给我的视图

public class ProductsVM
{
    public IList<Item> items { get; set; }
    public IList<Category> categories { get; set; }

}
在我看来,我是这样使用它的

    [HttpGet]
    public ActionResult Products()
    {
        ViewBag.Message = "...Products...";

        ProductsVM productsVm = new ProductsVM();
        productsVm.items = db.Items.ToList();
        productsVm.categories = db.Categories.ToList();
        return View(productsVm);
    }

    [HttpPost]
    public ActionResult Products(ProductsVM model)
    {
        ViewBag.Message = "...Categories...";



        return View(model);
    }
    @using (Html.BeginForm())
    {
        <div class="row">
            <div class="col-md-2">
                @foreach (var it in Model.categories.ToList())
                {
                    <div class="input-group">
                        @Html.CheckBoxFor(i => it.isSelected, new { Name =         "ChkCategory", id = "ChkCategory"+it.Id, @class = "Categories" }) @it.Name
                        @Html.HiddenFor(i => it.Name)

                    </div>
                }
            </div>

            @*Loading Items...*@
            <div class="col-md-10">
                @for (int i = 0; i < Model.items.Count() / 3; i++)
                {
                    <div class="row">
                   @foreach (var item in Model.items.Skip(i *         3).Take(3))
                {
                    <div class="col-md-4 col-sm-6 col-xs-12">
                        <img src="@Url.Content(item.ImagePath)" alt="@item.Description" class="thumbnail" />
                    </div>
                }
            </div>
        }
            </div>
        </div>
        <input type="submit" value="submit" />
    }


    @section scripts
    {
        <script src="~/Scripts/Products.js"></script>
    }
这是您的产品SVM:

当您提交表单时,它将获取表单控件中的值,并使用控件的名称将其发布到Products操作。在视图表单中,有一个名为chkCategory的复选框和一个名为chkCategory的隐藏输入。当您发布表单时,它将发送chkCategory及其值,以及名为的隐藏项。当它到达服务器端时,MVC将在控制器中查找名为Products的操作方法。然后,默认绑定器将尝试查找chkCategory和Name属性,以查看操作是否接受它们。它找不到它。然后,它将尝试查看是否可以创建ProductsVM,但它不能,因为ProductsVM有两个属性:项目和类别,它们与您发布的内容不匹配,因此它将选择该操作并将其传递为null


您的代码中有许多问题,并且它不能很好地与整个MVC框架配合使用。我建议您阅读并尝试一些简单的示例来掌握它,然后尝试您正在做的事情。

展示您的产品。jsyup如果您展示您的产品。js这将有助于我们进行调试。感谢除了重复之外,您不能使用foreach循环,不要试图更改名称属性。先生,如果您想了解更多有关MVC Model Binder工作原理的信息,请证明其他链接,您提供的链接已断开。我几乎不理解你的回答。谢谢你,先生。@Jardepkarena我更改了链接,现在应该可以工作了。只有谷歌。希望有帮助。
    $(function () {
        console.log('Inside js......');
        $('.Categories').click(function (e) {
            console.log(this.id, $("#" + this.id).is(":checked"));
            $.ajax({
                type: "POST",
                url: "/Home/Products",
                success: function () {
                    console.log("ajax successfull....");
                },
                error: function () {
                    console.log("ajax error....");
                }
            });
        });

    });
public class ProductsVM
{
    public IList<Item> items { get; set; }
    public IList<Category> categories { get; set; }
}
[HttpPost]
public ActionResult Products(ProductsVM model)