这个问题与CheckboxList in MVC3 View and get the checked items passed to the controller
密切相关我是MVC的新手,所以请耐心等待我:)
我已经根据查询引入了页面搜索结果,我想允许用户根据位置和扇区优化这些结果。我想尝试使用Checkboxes,但是我很难将复选框的值重新带回控制器以进行更新搜索操作。
我试图按照上面标注的问题中的示例进行操作,但是我不得不对其进行一些扩展,以便将我的搜索结果等合并,现在我无法获得任何结果 - 希望这是一个简单的事情然而,我会指出,我花了一两天的最佳时间试图弄清楚没有快乐。
模特:
public class IndexViewModel : PagedView
{
public enum ResultType
{
Business,
Pitch,
User
}
public string Query { get; set; }
public int? Page { get; set; }
public int? Show { get; set; }
public IEnumerable<Result> BusinessResults { get; set; }
public IEnumerable<LocationSearchModel> Locations { get; set; }
public class Result
{
...
}
public class LocationSearchModel
{
public int Id { get; set; }
public string Name { get; set; }
public bool IsChecked { get; set; }
}
}
与原作一样,我在视图中引用了EditorTemplate:
@using (Html.BeginForm("Refine", "Search", FormMethod.Post))
{
@Html.EditorForModel("LocationSearchModel", Model)
<input type="submit" class="btn" value="Update" />
}
我的EditorTemplate,LocationSearchModel.cshtml,如下所示:
@model UpInvestments.Web.Models.Search.IndexViewModel
@{
ViewBag.Title = "LocationSearchModel";
}
@foreach (var loc in Model.Locations)
{
// Those two hidden fields are just to persist the id and name
@Html.HiddenFor(x => loc.Id)
@Html.HiddenFor(x => loc.Name)
<div>
@Html.CheckBoxFor(x => loc.IsChecked)
@Html.LabelFor(x => loc.IsChecked, loc.Name)
</div>
}
现在我怀疑这个问题可能在我试图放入我的控制器中,我目前有:
public async Task<ActionResult> Index(IndexViewModel queryModel)
{
var paging = queryModel.ToQueryPage();
Services.BusinessSearch.SearchModel businessSearchModel = new SearchModel(Maybe.FromNullable(queryModel.Query), paging);
......
}
我在这里尝试了许多不同的选项,但似乎无法使用,在这个例子中,我认为这是正确的,queryModel中的位置,这是我的IEnumerable的Location结果,是null,并且我希望在这里告诉我用户检查和取消选中哪些项目等。
非常感谢任何帮助,