我有一个包含2个表的数据库
TABLE Categories (CategoriesId, Name, Description)
TABLE Products (ProductId, CategoriesId, Title, ProductImageUrl)类别通过CategoriesId链接到产品。
我正在尝试使用LINQ来获取特定标题的所有内容。
public ActionResult Browse(string categories)
{
var spices = spiceDB.Products.Include("Products").Single(p => p.Title == categories);
return View(spices);
}产品型号
namespace SpiceShop.Models
{
public class Product
{
[Key]
public int ProductId { get; set; }
public int CategoriesId { get; set; }
public string Title { get; set; }
public string ProductImageUrl { get; set; }
public List <Categorie> Name { get; set; }
}
}类别模型
namespace SpiceShop.Models
{
public class Categorie
{
[Key]
public int CategoriesId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
//public List<Product> ProductId { get; set; }
public List<Product> Products { get; set; }
}
}发布于 2013-02-28 09:18:26
编辑:
看起来你的视图需要一个Model,它是一个"Product“类型的单一对象。
此外,我还尝试为我的每个标识符/变量指定一个最能表达其含义和意图的名称。
编辑2:
请注意,更改方法上的任何输入参数名称都需要对调用该方法的View代码进行相应的更改。
在MVC中,动作方法的参数是automatically mapped。
您的调试程序显示了一个Browse?categories=Sauces的URL,它自动映射到方法"Browse“,并将输入参数categories设置为"Sauces”。但是(我的版本) Browse方法需要一个categoryName参数,而不是categories参数。因此,您需要确保URL属性和方法参数具有完全相同的名称。
因此,如果您确实需要将所选类别的名称作为输入参数传递:
public ActionResult Browse(string categoryName)
{
// Gets the CategoryId for the given categoryName, or zero if not found.
var categoryId = spiceDB.Categories
.Where(c => c.Name == categoryName)
.Select(c => c.CategoriesId)
.FirstOrDefault();
// Gets the first Product (only) for the specified categoryId.
var firstProduct = category.Products
.FirstOrDefault(p => p.CategoriesId == categoryId);
return View(firstProduct);
}然而,支持这种类型的“父-子”关系的更常见的使用场景是:
当单击类别列表时,视图将按ID调用查询,而不是按名称查询(即3,not "Pickles")
List<Product>类型的模型例如:
public ActionResult Browse(int categoryId)
{
var products = spiceDB.Products
.Where(p => p.CategoriesId == categoryId)
.ToList();
return View(products);
}例如,使您的产品列表更全面,使您的数据访问代码更简单和更有效。
发布于 2013-02-28 09:00:35
只要删除.Include("Products")就可以了,这不是它的用法。
错误很明显,您的"Product“模型中没有"Products”属性。
https://stackoverflow.com/questions/15125540
复制相似问题