gpt4 book ai didi

c# - 请帮助我无法在一个 View 中了解多个模型

转载 作者:太空宇宙 更新时间:2023-11-03 19:36:22 27 4
gpt4 key购买 nike

我一直努力到头疼,读了那么多书,现在我的眼睛都流血了。

我有一个 Controller ,我想获取一组订单数据和一份订单商品列表。

我已经创建了一个订单类和一个订单项类,并试图获取它以便该订单将有一个订单项目列表,但它让我的大脑崩溃,我不知道我是否走在正确的道路上,或者我是否遗漏了一些我只是不明白的东西。

这是我的代码

public ActionResult finaliseQuote(string quoteid)
{
ViewData["quoteid"] = quoteid;

// populate our class with data about our quote so far
var orders = (from q in quote.All()
where q.quoteid == quoteid
select q).SingleOrDefault();



//IList<quoteParts> orderItemsList = new quoteParts(orderitems); (this not work)

quoteParts myparts = new quoteParts((from qi in quoteItem.All()
where qi.quote_id == quoteid
select qi).SingleOrDefault()); // compiles but this is not a list ?????

return View();
}

然后是我的 2 节课:

    public class quoteInfo
{
public IList<quoteParts> items { get; set; }
public DateTime datecreated { get; set; }
public double totalcost { get; set; }
public string quotesid { get; set; }

public quoteInfo(quote myquote)
{
items = new List<quoteParts>();
}
}

public class quoteParts
{
public string itemsid { get; set; }
public bool isextra { get; set; }
public string qty { get; set; }
public string mx { get; set; }
public string my { get; set; }
public string prodid { get; set; }

public quoteParts(quoteItem item)
{
itemsid = item.itemid;
isextra = item.isextra;
qty = item.qty;
mx = item.measureX.ToString();
my = item.measureY.ToString();
prodid = item.prodid;
}
}

我希望我可以创建一个 View ,然后引用 quoteInfo 并循环访问页面另一部分中的 quoteParts。

我知道对某些人来说这似乎是我在偷懒,但我不是在我做对的时候才知道一旦它起作用,我就明白了,现在我想做 OOP 等,但似乎一堵又一堵墙。

非常感谢

最佳答案

您需要为您的 View 创建一个可以保存数据的 ViewModel 类:

public class QuoteViewModel
{
public QuoteInfo Info { get; set; }
public QuoteParts Parts { get; set; }
public int QuoteId { get; set; }
}

将你的 View 强类型化到这个类,并在你返回 View 的操作方法中创建它的一个实例:

public ActionResult finaliseQuote(string quoteid)
{
var info = new QuoteInfo(
(from q in quote.All()
where q.quoteid == quoteid
select q).SingleOrDefault()
);
var parts = new QuoteParts(
(from qi in quoteItem.All()
where qi.quote_id == quoteid
select qi).SingleOrDefault()
);

var model = new QuoteViewModel {
QuoteId = quoteid,
Info = info,
Parts = parts
};

return View(model);
}

请注意,我更改了类名的大小写以反射(reflect) C# 的常见做法。 '

在您的 View 中,您通过访问 ViewData.Model.InfoViewData.Model.Parts 呈现不同的项目>ViewData.Model.QuoteId。 (是的,Model 中的大写 M 是故意的...)

此外,我不能保证此代码可以现成使用 - 我不知道您的代码的哪些部分以前可以使用...

关于c# - 请帮助我无法在一个 View 中了解多个模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1375396/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com