如何解决将复选框列表传递给ASP.NET MVC中的控制器以获取相关项的列表
在我的项目中,我生成了与每个产品类别相关的过滤器选项的列表,并将它们显示为“索引”视图中名为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>
在AdvancedSearch局部视图中,我需要将chechBox,其值和是否经过检查发送给控制器。这是局部视图:
@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
}
问题是:我不知道如何将用户选择的复选框发送到控制器。我尝试了仅发送值的FormCollection。
而且由于无法将isCheched属性包含在CodingItemmodel中(代表每个过滤器项),因此我尝试了一个包含IsCheched属性的viewmodel,但在这种情况下会出现此错误:索引视图需要ProductModel的IpagedList而不是viewmodel。
有没有一种方法可以使用Dictionary
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。