Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将数据控制器发送到视图_C#_Asp.net Mvc_Razor - Fatal编程技术网

C# 如何将数据控制器发送到视图

C# 如何将数据控制器发送到视图,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我有产品控制器,这是我按类别发送产品以查看的方法 我想查看我视图中的类别ID 像这样, public ActionResult Detay(int? categoryId) { var categories = categoryService.CategoriesToList(); if (categoryId == null) { var products = productService.Products().ToList();

我有产品控制器,这是我按类别发送产品以查看的方法

我想查看我视图中的类别ID

像这样,

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如何发送数据并从视图中获取数据

您可以通过ViewBag发送类别id

在控制员的行动中:

@if(categoryId==1){//do this.}
鉴于:

ViewBag.CategoryId = categoryId;

根据控制器代码,视图接收的是
IEnumerable
模型,而不是
产品本身。
创建新的viewmodel并使用它:

@if (ViewBag.CategoryId == 1)
{

}
或者在您的视图中使用
@Model.First().CategoryId
视图模型:

@model ProductsViewModel

@if(Model.CategoryId==1)..
视图:


注意:您可以在不使用viewmodel的情况下执行此操作。在这种情况下,向模型类声明属性。为该属性赋值,并将该模型传递给视图。

尝试ViewBag
ViewBag.category=“assign”
在控制器和视图中
@if(@ViewBag.category==“1”){//执行此操作。}
尝试传递产品的对象,如prod=products.Where(a=>a.CategoryId==CategoryId);返回视图(prod);在视图中,您需要接受模型作为产品,您需要访问您返回的模型的属性(在您的情况下,模型是一个集合,因此可能
model[0].CategoryId
或者您可以将值分配给控制器中的
ViewBag
属性,并使用
ViewBag.CategoryId
在这种情况下使用ViewBag不是一个很好的主意,因为它不是强类型的。而且此数据显然属于模型。是的,我知道它属于模型,但它是一种非常快速和清晰的执行方式这是必需的任务。事实上,强类型解决方案总是首选,它也非常快速和清晰。不要使用ViewBag。还有更多。。。
@model ProductsViewModel

@if(Model.CategoryId==1)..
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.