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

How do I extract an ID, select the correct view model from a list and pass this inside a partial?

我对 MVC 还很陌生。

我有以下情况:我在 QuoteDetails 页面上有一个报价列表。我点击一个报价,它会带我进入一个 ItemDetails 页面,我可以在该页面查看相关项目的列表。

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

@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>

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

当我 select 一个项目时,我想在我的部分中获取正确的 ItemViewModel。执行此操作的最佳方法是什么?

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

活动的 class,获取项目 ID 使用 linq 过滤 LiveQuotes 和 select QuotesOverviewViewModel 将其传递到部分。

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

我有一个如下所示的 QuotePageViewModel:

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;}
}

希望这很清楚。不懂的请追问。谢谢

看来我看错了。

以下对我有用。

我扩展了 QuotePageViewModel

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

我在 ViewModelService 中设置了值。在页面加载时我添加了这个:

<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.Partial(MVC.Item.Views.ViewNames._TabbedItemDetailsPanel, Model.SelectedItem)

希望这对某人有所帮助。