public ActionResult Detay(int? categoryId)
{
var categories = categoryService.CategoriesToList();
if (categoryId == null)
{
var products = productService.Products().ToList();
return RedirectToAction("Index");
}
else
{
var products = productService
.CategoryProducts((int) categoryId, 50)
.ToList();
var result = products.Where(a => a.CategoryId == categoryId);
return View(result);
}
}
我有产品控制器,这是我发送产品按类别查看的方法。
我想在我的视图中检查categoryId
喜欢这个;
@if(categoryId==1){//do this.}
但我无法达到categoryId如何发送数据并从视图中获取数据?
答案 0 :(得分:4)
根据您的控制器代码,您的视图会收到IEnumerable<Product>
作为模型,而不是Product
本身。
创建一个新的viewmodel并使用它:
public class ProductsViewModel
{
public int CategoryId {get;set;}
public IEnumerable<Product> Products {get;set;}
}
并在您看来:
@model ProductsViewModel
@if(Model.CategoryId==1)..
或在您的视图中使用@Model.First().CategoryId
答案 1 :(得分:0)
查看型号:
public class ProductsViewModel
{
public int CategoryId{get;set;}
public IEnumerable<Product> Products {get;set;}
}
控制器:
public ActionResult Detay(int? categoryId)
{
var productVM= new ProductsViewModel();
var products = productService
.CategoryProducts((int) categoryId, 50)
.ToList();
productVM.Products = products.Where(a => a.CategoryId == categoryId);
productVM.CategoryId=1 // ex. your value
return View("Detay", productVM);
}
视图:
@model ProductsViewModel
@if(Model.CategoryId==1).. // then you can use like this.
注意:您可以在不使用viewmodel的情况下执行此操作。在这种情况下,将属性声明为模型类。为该属性赋值并将该模型传递给视图。
答案 2 :(得分:-1)
您可以通过ViewBag发送类别ID,
控制器动作中的:
ViewBag.CategoryId = categoryId;
在视图中:
@if (ViewBag.CategoryId == 1)
{
}