[英]ASP.NET MVC Catching and Using Parameter In The View
這是索引視圖中的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>
我怎樣才能做到這一點?
新的ViewModel合並了過濾器參數和結果集:
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”,新的{number1 = @ ViewBag.N1,number2 = @ ViewBag.N2},null)
或使用模型:
控制器:
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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.