将复选框值返回到控制器MVC4

时间:2013-12-11 13:06:01

标签: c# html5 asp.net-mvc-4 razor checkbox

这个问题与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,并且我希望在这里告诉我用户检查和取消选中哪些项目等。

非常感谢任何帮助,

0 个答案:

没有答案