如何获取控制器

时间:2016-05-12 09:18:11

标签: asp.net-mvc

我正在制作一个新的首页,它将显示过滤器和新闻帖子列表。每个新闻帖子和每个新闻列表都可以标记为多个业务领域。

新闻列表将根据以下内容包含新闻:

  • 可由管理员更改的新闻列表设置。
  • 然后通过页面上的过滤器表单进行过滤。
  • 并且,如果过滤器为空但用户已登录,则按用户首选项进行过滤。

加载视图 IndexSecond 后,过滤器会根据其新闻列表获取其可选择的业务区域。我的问题是,我不知道如何从EditorFor获取选定的业务范围,最终传递到 model.filteredBAs IndexSecondFiltered

当我在IndexSecondFiltered中遇到断点时,model总是为空。

在视图IndexSecond

@model Slussen.BLL.Models.PostFilterListModel
...
@using (Html.BeginForm("IndexSecondFiltered", "Home", new { model = model }))
{
      @Html.HiddenFor(model => model.filteredBAs)
      @Html.ValidationSummary(true, "", new { @class = "text-danger" })
      <div class="form-group">
          <div class="col-sm-2">Business area</div>
          <div class="col-md-10">
              @Html.EditorFor(model =>  Model.newslistModel.BusinessAreas, 
                                        new { htmlAttributes = new { @class = "form-control" } })
          </div>
      </div>

      <div class="form-group">
          <div class="col-md-offset-2 col-md-10">
              <input type="submit" value="Go" class="btn btn-primary orange" />
          </div>
      </div>                
}

在HomeController中

public ActionResult IndexSecond()
{
    //Known user?
    int? uo = null;
    if (User.Identity.IsAuthenticated)
        uo = CurrentUser.UserOrganization.Id;

    return View(
            _queryDispatcher.Execute<PostFilterListModel>(
              new GetFilteredNewsListById(1, uo, "", 1, 
                new System.Collections.Generic.List<int>(), 
                new System.Collections.Generic.List<int>())));
}

[HttpPost]
public ActionResult IndexSecondFiltered(PostFilterListModel model)
{
    //Known user?
    int? uo = null;
    if (User.Identity.IsAuthenticated)
        uo = CurrentUser.UserOrganization.Id;

    return View(
             _queryDispatcher.Execute<PostFilterListModel>(
               new GetFilteredNewsListById(1, uo, "", 1, 
                 new System.Collections.Generic.List<int>(), model.filteredBAs)));
}

1 个答案:

答案 0 :(得分:0)

我得到了一位同事的帮助。

我根本不需要[HttpPost] ActionResult IndexSecondFiltered。

当我更换

@using (Html.BeginForm("IndexSecondFiltered", "Home"), new { model = model })

用这个

@using (Html.BeginForm("IndexSecond", "Home"))

模型与IsSelected-status

一起传递给控制器