【问题标题】:Sorting db info for MVC model为 MVC 模型排序数据库信息
【发布时间】:2014-02-11 22:38:14
【问题描述】:

FindByCounty() 这个函数应该去数据库并提取信息。将信息存储在它们各自的类中(它确实如此)......但是然后呢?

public EditCountyViewModel FindByCounty(string countyName)
        {
            var parameters = new DynamicParameters();
            parameters.Add("@CountyName", value: countyName);

            var query = @"SELECT counties.id
                            , counties.CountyName
                            , counties.Website
                            , counties.Address
                            , counties.City
                            , counties.State
                            , counties.PhonePrimary
                            , counties.PhoneAlt
                            , counties.RecordsOnline
                            , counties.BackToYear
                            , counties.Cost
                            , products.ProductName
                            , products.Description
                            , countyproduct.TurnTime_MinHours
                            , countyproduct.TurnTime_MaxHours
                            , countyproduct.Price
                        FROM
                            counties, countyproduct, products
                        WHERE
                            counties.CountyName = @CountyName AND countyproduct.countiesID = counties.ID AND countyproduct.productsID = products.ID;";

            EditCountyViewModel editCountyVM = new EditCountyViewModel();
        EditProductsViewModel editProductVM = new EditProductsViewModel();
        editProductVM.ProductList = this.db.Query<Product>(query, new { countyName }).ToList();
        editCountyVM.county = this.db.Query<County>(query, new { countyName }).FirstOrDefault();


        return editCountyVM;
        }

HOMEcontroller 上的详细信息() 我想我应该只查询所有信息,然后在这个函数中使用 LINQ 来拼凑出我需要的信息。

public ActionResult Details(string countyName)
    {
        var model = repository.FindByCounty(countyName);
        return View(model);
    }

就我的代码而言,它不会运行,因为在FindByCounty() 中它只返回所需元素之一editCountyVM。现在我可以更改函数的输出并返回另一个 editProductVM 但我不会有第一组信息(editCountyVM)。

我认为问题在于我要获取此信息的方法。任何帮助将不胜感激。

【问题讨论】:

    标签: c# mysql asp.net-mvc dapper


    【解决方案1】:

    听起来如果您想同时返回editCountyVMeditProductVM,您可以将方法的返回类型更改为Tuple&lt;EditCountyViewModel,EditProductsViewModel&gt;。然后按如下方式制作您的退货声明:

    return new Tuple<EditCountyViewModel,EditProductsViewModel>(editCountyVM, editProductVM);
    

    【讨论】:

    • 这确实有道理,但并不能完全回答我最初的问题。在FindByCounty() 我只能退回一件商品。在上面的代码中,我让它返回editCountyVM...但是,我希望这两个(editCountyVMeditProductVM)都返回,所以我将它们用作家庭控制器中的模型。
    • 哦,我明白了。你想返回两个 ViewModel 吗?
    • 基本上是的。但是,我觉得可能有比我尝试的更好的方法来做到这一点。就像我在OP中说的那样。我觉得我可以在家庭控制器中使用 LINQ 进行一些排序。但由于我是 MVC 的新手,我现在还不能完全克服这个问题
    • 我同意您在此处还有其他一些设计注意事项,但我相信我的更新答案将解决您眼前的问题。
    • 这就是我喜欢这个网站的原因。我刚刚学到了一些新东西#Tuples
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-12
    • 2022-01-20
    • 1970-01-01
    • 2015-01-19
    • 2017-02-14
    • 2011-01-08
    • 1970-01-01
    相关资源
    最近更新 更多