2

次のようにブレッドクラムを作成するコントローラーがあります。

Software > Windows 7 > Outlook 2007

これを作成するコードは次のとおりです。

ViewBag.breadcrumbs = string.Join(" > ", cbh.Select(i => i.Title));

ブレッドクラムのハイパーリンクを作成する簡単な方法はありますか?これは(i.ParentID)を指します。

Software -> forum/index/12
Windows 7 -> forum/index/19
Outlook 2007 -> forum/index/23

または、cbhをループして、手動で<a href = ...>文字列を作成し、それらをビューに渡す必要がありますか?

ありがとうございました、

マーク

4

2 に答える 2

3

最善の策は、必要なアイテムをモデルに入れてから、それらをループすることです。

次のようなものを試してください。

モデル

public class Model
{
    public struct BreadCrumb
    {
        public string Title;
        public string Url;
    }

    public List<BreadCrumb> Breadcrumbs { get; set; }
}

意見

@{ int index = 0; }
@foreach(var crumb in this.Model.Breadcrumbs)
{
    <a href="@(crumb.Url)" title="@(crumb.Title)">@(crumb.Title)</a>

    if(index < this.Model.Breadcrumbs.Count - 1)
    {
        <span>&gt;</span>
    }

    index++;
}
于 2013-03-25T15:02:27.227 に答える
1

はい、ビューにブレッドクラムリンクを作成する必要があります。それが役立つ場合は、BreadCrumbModelクラスを作成できます(まだクラスがない場合)。

ViewBag.breadcrumbs = cbh.Select(i => new BreadCrumbModel() 
                                      {
                                          Id = i.Id, 
                                          Title = i.Title 
                                      });

@{ 
    var printSeparator = false;
}
@foreach(BreadCrumbModel bc in ViewBag.breadcrumbs)
{
    @if(printSeparator)
    {
        <span class="breadcrumb-separator">&nbsp;&gt;&nbsp;</span>
    }
    <span class="breadcrumb">
      @Html.ActionLink(bc.Title, "index", "forum", new { id = bc.Id });
    </span>
    @{
        printSeparator = true;
    }
}

異なるコントローラーとアクション(フォーラム/インデックスだけでなく)の間にブレッドクラムが必要な場合は、それらをのプロパティとして追加しますBreadCrumbModel

于 2013-03-25T15:00:11.670 に答える