我对c#
非常陌生我有以下linq查询:
public GetAllProducts[] AllProducts(int status)
{
try
{
using (UserDataDataContext db = new UserDataDataContext())
{
return db.mrobProducts.Where(x => x.Status == status).Select(x => new GetAllProducts { Name = x.Name, Desc = x.Description, Price = x.Price }).OrderBy(x => x.Name).ToArray();
}
}
catch
{
return null;
}
}
我希望能够做的就是从我的控制器中调用它,并为返回的每个产品组创建一个列表并将其加载到我的视图中。
我的控制器如下,但我不知道如何创建列表,并将其传递给我的视图,我很困惑。
public ActionResult Index(GetAllProducts allProductsModel)
{
var webService = new DaveyServiceClient();
webService.AllProducts(1);
var allProducts = webService2.AllProducts();
return View("../Private/Index", allProducts);
}
答案 0 :(得分:1)
您的实体名称实在令人困惑,为什么“GetAllProducts”对我来说听起来像是一个功能......我将其重命名为Product。新的存储库代码:
public Ienumerable<Product> AllProducts(int status)
{
try
{
using (UserDataDataContext db = new UserDataDataContext())
{
return db.mrobProducts.Where(x => x.Status == status).Select(x => new Product
{
Name = x.Name,
Desc = x.Description,
Price = x.Price
}).OrderBy(x => x.Name);
}
}
catch
{
return null;
}
}
您的控制器几乎不错,只需重命名实体,我建议使用DI而不是在代码中创建特定对象。此外,您无需添加View的相对路径,只需为Controller创建相同的文件夹层次结构。
这是您的型号代码(cshtml):
@model IEnumerable<Product>
@{
ViewBag.Title = "All Products";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@foreach (var item in Model)
{
//Show your products
<p>item.Name</p>
}