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>

我该怎么做?

ASP.NET MVC 捕获并在视图中使用参数

包含筛选器参数和结果集的新视图模型:

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>