C# asp.net mvc中同一视图页中的搜索表单和搜索结果

C# asp.net mvc中同一视图页中的搜索表单和搜索结果,c#,asp.net,asp.net-mvc,asp.net-mvc-4,search,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Search,我正在尝试创建一个模块,其中包含搜索表单和搜索结果,如下图所示 在该模块中,我有4个下拉列表和一个文本字段 这就是我现在所做的 这是模型课 public class ProductCollectionVM { public IEnumerable<ProductCollection> List_ProductCollection { get; set; } public ProductCollection Form_ProductCollection { get;

我正在尝试创建一个模块,其中包含搜索表单和搜索结果,如下图所示

在该模块中,我有4个下拉列表和一个文本字段

这就是我现在所做的

这是模型课

public class ProductCollectionVM
{
    public IEnumerable<ProductCollection> List_ProductCollection { get; set; }
    public ProductCollection Form_ProductCollection { get; set; }
}

public class ProductCollection
{
    public string Product_ID { get; set; }        
    public string ProductType_ID { get; set; }
    public string ProductCategory_ID { get; set; }
    // more properties
}
但一旦我调试了它,就会出现以下错误

传递到字典中的模型项的类型为 'System.Collections.Generic.List'1[Project_Name.Models.ProductCollection], 但此词典需要类型为的模型项 '项目名称.Models.ProductCollectionVM'


在我的控制器类中,这是正确的方法吗?或者在您的
控制器中的相同视图中,是否有其他更好的方法来执行此操作

select new ProductCollection
但在您的
视图上
使用:

@model albaraka.Models.ProductCollectionVM

您应该将
控制器中的类更改为
ProductCollectionVM

您的视图将模型声明为
@model albaraka.Models.ProductCollectionVM
,但在提交时,您将视图返回为
IEnumerable
,因此出现错误

在POST方法中,需要初始化
ProductCollectionVM
的新实例并返回它

public ActionResult Product_Search(.....)
{
  // filter your collection
  var incomplete_products = ....
  ProductCollectionVM model = new ProductCollectionVM()
  {
    List_ProductCollection = incomplete_products;
  };
  return View(model)
}

但是,通过使用ajax提交表单值并返回表的部分视图或包含表值的JSON并在成功回调中更新DOM,您将获得更好的性能。请参阅此以获取简化示例

您查看的has
@model ProductCollectionVM
,因此在控制器中,您需要返回
ProductCollectionVM
(不是
IEnumerable
)的实例。如何返回ProductCollectionVM的实例?初始化它,然后将
List_ProductCollection
设置为
completed_products
,并返回它(但为了获得更好的性能,您确实应该使用ajax)
ProductCollectionVM model=new ProductCollectionVM()这是如何初始化它的?试试这个。显然不完整,但我相信你会明白的
@model albaraka.Models.ProductCollectionVM
public ActionResult Product_Search(.....)
{
  // filter your collection
  var incomplete_products = ....
  ProductCollectionVM model = new ProductCollectionVM()
  {
    List_ProductCollection = incomplete_products;
  };
  return View(model)
}