如何将按钮值从视图传递到控制器以过滤数据

时间:2018-07-13 19:56:39

标签: c# asp.net-mvc entity-framework

我正在开发一个应用程序,该应用程序需要将按钮值从视图传递到控制器以过滤数据库。

在这里,我需要将2009年至2018年/当前年份显示为我使用操作链接的按钮。我不确定如何将要进入循环的年份传递给控制器​​,以仅获取点击的年份结果。

查看:

var year = DateTime.Now.Year;
for (var i = year; i > 2009; i--)
{
    var j = @i - 1;
            <div class="col-md-1 ">
                @Html.ActionLink(i.ToString(), "MyCases/" + i)
            </div>                
}

控制器:

public ActionResult MyCases(int i)
{
    var cases = _db.case.Where(p => p.date.Value.Year == i)
                    .OrderByDescending(p => p.date).ToList();
    return View(cases);
}

1 个答案:

答案 0 :(得分:1)

您可以将年份作为所使用的ActionLink重载的路由值参数。传递名称与操作方法参数名称(i)相同的匿名对象。

@Html.ActionLink(i.ToString(), "MyCases", new { i = i })

ActionLink帮助程序将为锚标记建立正确的标记,其中您的href属性值将类似于MyCases?i=2018,其中2018i的样本值

您可以使用this overload明确指定控制器名称

@Html.ActionLink(i.ToString(), "MyCases","Home", new { i = i }, null)