如何提取 ID,从列表中选择正确的视图模型并将其传递到部分中

本文关键字:模型 视图 提取 何提取 ID 选择 列表 | 更新日期: 2023-09-27 18:37:16

我对MVC相当陌生。

我有以下情况:我在"报价详情"页面上有一个报价列表。我单击报价,它将带我进入"项目详细信息"页面,我可以在其中查看相关项目的列表。

一个项目

属于报价单,一个报价单可以有多个项目。这些项目列在"项目详细信息"页面上的边栏上。

@model QuotePageViewModel
 <div class="list-group">
    @{bool firstItem = true;}
    @foreach (var quote in Model.LiveQuotes)
    {
        if (firstItem.Equals(true))
        {
            firstItem = false;
            <a href="#" id="@quote.Item.ItemID" class="list-group-item active">
                <span class="glyphicon glyphicon-file"></span>@quote.Item.Title<span class="badge">ItemID: @quote.Item.ItemID</span>
            </a>
        }
        else
        {
            <a href="#" id="@quote.Item.ItemID" class="list-group-item">
                <span class="glyphicon glyphicon-file"></span>@quote.Item.Title<span class="badge">ItemID: @quote.Item.ItemID</span>
            </a>
        }
    }
</div>
<div class="col-sm-9">
    @Html.Partial(MVC.Item.Views.ViewNames._TabbedItemDetailsPanel, ViewData)
</div>

这将按预期列出我的所有项目。

当我选择一个项目时,我想在我的部分中抓取正确的项目视图模型。最好的方法是什么?

我有一些想法,但我不太确定如何实现它们。例如,一个是:

处于活动状态的类,获取项 ID 使用 linq 筛选实时报价并选择报价概述视图模型将其传递到部分。

或者 ajax 调用更适合这个吗?

我有一个报价页面视图模型,看起来像这样:

public class QuotePageViewModel : PageViewModel
{
    public IEnumerable<QuotesOverviewViewModel> LiveQuotes { get; set; }
}
public class QuotesOverviewViewModel : DataViewModel
{
    public QuoteViewModel Quote { get; set; }
    public CustomerViewModel Customer { get; set; }
    public QuoteStatusViewModel QuoteStatus { get; set; }
    public OriginatorViewModel Originator { get; set; }
    public ItemViewModel Item { get; set; }
}
public class ItemViewModel : DataViewModel
{
    public int ItemID { get; set; }
    public int? QuoteID { get; set; }
    public string Title { get; set; }
    public int? Quantity { get; set; }
    public Money Price { get; set; }
    public QuoteViewModel Quote { get; set;}
}

希望这是清楚的。如果您不明白,请询问。谢谢

如何提取 ID,从列表中选择正确的视图模型并将其传递到部分中

看来我看错了。

以下为我解决了问题。

我扩展了报价页面视图模型

public class QuotePageViewModel : PageViewModel
{
    public IEnumerable<QuotesOverviewViewModel> LiveQuotes { get; set; }
    public PaginatedViewModel<QuotesOverviewViewModel> ArchivedQuotes { get; set; }
    public ItemViewModel SelectedItem { get; set; }
}

我在视图模型服务中设置了值。在页面加载时,我添加了以下内容:

<a href="@Url.Action(MVC.Item.ActionNames.ItemDetail, MVC.Item.Name, new { itemId = @quote.Item.ItemID })" id="@quote.Item.ItemID" class="list-group-item active">

更新了部分: @Html.部分(MVC.Item.Views.ViewNames._TabbedItemDetailsPanel,模型.选定项)

希望这对某人有所帮助。