簡體   English   中英

如何提取ID,從列表中選擇正確的視圖模型並將其傳遞到局部視圖中?

[英]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>

這將按預期列出我的所有項目。

當我選擇一個項目時,我想在我的局部中獲取正確的ItemViewModel。 最好的方法是什么?

我有一些想法,但我不太確定如何實現它們。 例如,一個是:

處於活動狀態的類,使用linq來獲取Item ID,以過濾LiveQuotes並選擇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)

希望這對某人有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM