使用Web服务的一对多关系本地数据库MVC视图

本文关键字:数据库 MVC 视图 关系 Web 服务 一对多 使用 | 更新日期: 2023-09-27 18:08:43

我目前正在大学做一项作业,不幸的是我不久前丢失了一些代码。特别是在我将特定产品显示到特定商店的地方,我所拥有的代码不起作用无论如何,我希望你能帮助我。

我有一个web服务和一个本地数据库,web服务从中引入产品信息而本地信息有店铺数据和店铺等级数据。

下面是我为在详细信息视图页面上显示它而准备的代码。

@model Part1MVC.ViewModels.GradeProductVM
@{
ViewBag.Title = "Details";
}
<h2>Details</h2>
<fieldset><legend>GradeProductVM</legend>
<div class="display-label">@Html.DisplayNameFor(model => model.Gradeid)</div>
<div class="display-field">@Html.DisplayFor(model => model.Gradeid)</div>
<div class="display-label">@Html.DisplayNameFor(model => model.GradeName)</div>
<div class="display-field">@Html.DisplayFor(model => model.GradeName)</div>
</fieldset>
<div>There are @Model.Products.Count products</div>
@foreach (var prod in Model.Products) { <div>@prod.ProductName</div>}
<p>@Html.ActionLink("Edit", "Edit", new { id=Model.Gradeid }) |
@Html.ActionLink("Back to List", "Index")</p>

//这是service1.cs获取等级product的代码

    public List<PhysicalProduct> GetProductsForGrade(int gradeid){
        var list = new List<PhysicalProduct>();
        try {
            using (var db = new ProductsEntities()) {
                var q = from prod in db.PhysicalProducts
                        join pg in db.ProductToGrades on prod.ProductId equals pg.ProductId
                        where pg.StoreGradeId == gradeid
                        select prod;
                return q.ToList();
            }
        }
        catch (Exception ex) {
            return null;
        }
        return list;
    }

////这是控制器代码

    public ActionResult Details(int id){
        Grade grade = db.Grade.SingleOrDefault(x => x.GradeId == id);
        //var products = ServiceLayer.GetProducts();
        var products = ServiceLayer.GetProductsForGrade(id);
        var vm = new ViewModels.GradeProductVM(id, grade.Description, products);
        return View(vm);
    }

//这是视图模型代码

public class GradeProductVM {
    public int Gradeid { get; set; }
    public string GradeName { get; set; }
    public List<PhysicalProduct> Products { get; set; }
    public GradeProductVM() {
    }
    public GradeProductVM(int gradeid, string name, List<PhysicalProduct> prods){
        Gradeid = gradeid;
        GradeName = name;
        Products = prods;
    }
}

我可以让数据库中当前的所有产品显示到每个商店,但不能让特定产品显示到特定商店。

谢谢

使用Web服务的一对多关系本地数据库MVC视图

请张贴数据库表结构,似乎查询join可能是错误的。休息似乎是正确的!