ASP.NET MVC 捕获并在视图中使用参数
本文关键字:视图 参数 NET MVC ASP | 更新日期: 2023-09-27 18:34:07
这是索引视图中的 ActionLink。
@Html.ActionLink("€ 50-100", "Filter", new { number1 = 50, number2 = 100 }, null)
这是控制器中用于捕获 2 个参数的过滤器方法
[HttpGet]
public ActionResult Filter(int number1, int number2)
{
var result = db.Gifts.Where(c => c.Price > number1 && c.Price <= number2).ToList();
return View(result);
}
一切正常,但我想在过滤器视图中使用该参数;
<h3> Choose a gift from the list of € number1 - number2 </h3>
我该怎么做?
包含筛选器参数和结果集的新视图模型:
public class MyViewModel
{
public int Number1 { get; set; }
public int Number2 { get; set; }
public List<Gifts> GiftList { get; set; }
}
更新了操作方法。 在此处分配模型属性并将模型传递给视图:
public ActionResult Filter(int number1, int number2)
{
var model = new MyViewModel
{
Number1 = number1,
Number2 = number2,
GiftList = db.Gifts.Where(c => c.Price > number1 && c.Price <= number2).ToList()
}
return View(model);
}
更新的视图。 您需要更改顶部的模型声明以使用新模型:
@model MyViewModel
<h3> Choose a gift from the list of € @Model.Number1 - @Model.Number2 </h3>
您可以像这样循环访问Gifts
结果集:
@foreach(var item in Model.GiftList)
{
...
根据您的代码,您似乎正在尝试将一些值从控制器传递到视图。
您可以使用ViewBag执行此操作:控制器:
public ActionResult Filter(int number1, int number2)
{
var result = db.Gifts.Where(c => c.Price > number1 && c.Price <= number2).ToList();
ViewBag.N1 = 50;
ViewBag.N2 = 100;
return View();
}
视图:
@Html.ActionLink("€ 50-100", "Filter", new { number1 = @ViewBag.N1, number2 = @ViewBag.N2 }, null)
从 € @ViewBag.N1 - @ViewBag.N2 列表中选择一份礼物
或者通过使用模型:
控制器:
public class MyModel
{
public Int32 N1 {get;set;}
public Int32 N2 {get;set;}
}
public ActionResult Filter(int number1, int number2)
{
var result = db.Gifts.Where(c => c.Price > number1 && c.Price <= number2).ToList();
return View(new MyModel{N1 = 50, N2 = 100});
}
视图:
@model MyModel
@Html.ActionLink("€ 50-100", "Filter", new { number1 = @Model.N1, number2 = @Model.N2 }, null)
<h3> Choose a gift from the list of € @Model.N1 - @Model.N2 </h3>