Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.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_Asp.net Mvc_Checkbox_Html Helper - Fatal编程技术网

将复选框列表传递给ASP.NET MVC中的控制器,以获取相关项的列表

将复选框列表传递给ASP.NET MVC中的控制器,以获取相关项的列表,asp.net,asp.net-mvc,checkbox,html-helper,Asp.net,Asp.net Mvc,Checkbox,Html Helper,在我的项目中,我为每个产品类别生成了一个相关筛选选项列表,并在索引视图中以名为AdvancedSearch的局部视图的形式显示它们: @model IPagedList<fardashahr.Models.ProductModel> @using PagedList.Mvc; @using PagedList; <link href="~/Content/PagedList.css" rel="stylesheet" /> <

在我的项目中,我为每个产品类别生成了一个相关筛选选项列表,并在索引视图中以名为AdvancedSearch的局部视图的形式显示它们:

@model IPagedList<fardashahr.Models.ProductModel>
@using PagedList.Mvc;
@using PagedList;
<link href="~/Content/PagedList.css" rel="stylesheet" />
<div class="w-100">p
</div>
<div class="row w-100">
    <div class="col-md-3 bg-light">
            @Html.Partial("AdvancedSearch")
    </div>
    <div class="col-md-9">
            @foreach (var item in Model)
            {
                <div class="col-md-3">
                        <a href="@Url.Action("Details","Home",new { name = item.ProductUrl })">
                        </a>
                </div>
            }
        <div class="row">
            @Html.PagedListPager((IPagedList)Model, page => Url.Action("Index", new { page = page, name = ViewBag.categoryName,search=ViewBag.Search , pageSize=ViewBag.PageSize }))
        </div>
    </div>
</div>
问题是:我不知道如何将用户选中的复选框发送到控制器。我尝试了只发送值的FormCollection。 由于我无法将IsChecked属性包含到CodingItemModel(表示每个筛选器项),因此我尝试了包含IsChecked属性的ViewModel,但在这种情况下会出现这样的错误:索引视图需要ProductModel的IpagedList,而不是ViewModel。 有没有一种使用字典的方法?
有什么想法吗?我很感激。

您的上一个代码,
ActionResult
,不应该是
ViewResult
?要返回
ToPagedList
集合?您能展示一下您在控制器方法中所做的尝试吗?
    @using fardashahr.Models;
@model FilterVM
@{
    List<SpecItemsModel> options = ViewBag.filters as List<SpecItemsModel>;
}
@if (options != null)
{
    <h3>Advanced Search</h3>
    <form action="Home/Index" method="get">
        @foreach (SpecItemsModel spec in options)
        {
            string label = spec.Name;
            int id = spec.Id;
            string name = spec.LatinName + "_" + id;

            object val = spec.SpecValue != null ? spec.SpecValue : string.Empty;

            <div class="w-100 form-group">
                <h4 class="active">
                    @Html.Label("", label, new { @class = "w-100 p-2" })
                </h4>
                <div class="w-100 p-2">
                    @switch (spec.SpecType.TechCode)
                    {
                        //some other cases
                          
                        case "SelectList":
                            SelectList selectList = SelectLists.GetDynamicList(spec.ListType.TechCode, val);
                            List<CodingItemModel> checkboxes = SelectLists.GetOptions(spec);
                            foreach (CodingItemModel item in checkboxes)
                            {
                                <div class="checkbox">
                                    @Html.CheckBox(item.Name, false, new { @id = id, @name = item.TechCode, @class = "" })
                                    @Html.Label(item.Name)
                                </div>
                            }
                            break;
                        default:
                            break;
                    }
                    @Html.ValidationMessage(name, "", new { @class = "text-danger" })
                </div>
            </div>
        }
        <div class="">
            <input type="submit" class="btn btn-danger btn-block btn-lg" value="Search" />
        </div>
    </form>
}
public ActionResult Index(string name, int? page, string search = null, int pageSize = 5)
        {
//some code
}