2017-10-11 19 views
0

これは前に頼まれましたが、私はうまくいけば、より良い答えを得るために、私の質問をより正確にするつもりです:aspnetboilerplateベースのプロジェクトに新しいメニューを追加するにはどうすればいいですか?

私はページ名のクラスにビューを追加する方法を考え出した:

public const string WorkOrders = "WorkOrders"; 

その後、ナビゲーションバーにそれらを取得するprojectNavigationProviderクラスへ:

  .AddItem(
      new MenuItemDefinition(
        PageNames.WorkOrders, 
        L("WorkOrders"), 
        url: "WorkOrders", 
        icon: "business", 
        requiredPermissionName: PermissionNames.Pages_WorkOrders 
       ) 

が私の主な意見は、メインナビゲーションバーに追加され、正常に動作取得します。

しかし、他の場所で使用する全く新しいメニューを作成する方法はわかりません。私が働いているアプリケーションでは、特定のテーブル内のすべてのレコードを表示するいくつかのページがあります(例:Work Order)。しかし、各テーブルの各レコードには、作成、編集、詳細、および削除のための他のページへのリンクがいくつかあるはずです。

私のパートナーの1人がコントローラのエンドポイントへのモーダルとajaxコールを使用してこの問題を他のページで解決したようです。それは、名前と連絡先情報のみを必要とする顧客にとってはうまくいきますが、私は作業項目を作成、表示、編集するためのモーダルは、それぞれの項目ごとに関連項目を追加する必要があるため、機能しませんetc ...それにはたくさんのことがあります。最後に、テンプレートを使用するように設定されているようには見えません。それは、テンプレートを使用するために自分のjsをたくさん書いていたからです。

現在、作成、編集、詳細ビューが存在し、各レコードの隣にリンクがありますが、リンクを使用しようとするとエラーが発生します。ルーティングの仕組みがわからないのでしょうか? VSからの通常のmvcテンプレートでは、リンクにはコントローラとメソッドを指定するプロパティがあり、mvcは残りを処理します。

<a asp-action="Edit" asp-route-id="@item.WorkOrderID">Edit</a> | 
<a asp-action="Details" asp-route-id="@item.WorkOrderID">Details</a> | 
<a asp-action="Delete" asp-route-id="@item.WorkOrderID">Delete</a> 

私は私がちょうどnavigationproviderへのリンクを追加する必要がある事になり、私がロードする作業オーダーのページを取得しようとしたときに持っていたが、ページ名またはnavigationproviderに追加していなかった同じエラーを取得しています私はリンクをWordOrdersのメインメニューのページを作成する必要はありません、私は対応するレコードの隣にミニメニューでそれをしたい。私はpagenamesクラスにページを追加しましたが、私のメインページ用に別のメニューを作成する方法はわかりません。

context.Manager.MainMenu 

と私は別のメニューを作成し、このようにそれにアイテムを追加することができなければならないと思っています:

context.Manager.NewMenu.AddItem(.... 

私が見るnavigationproviderクラスの見直しで

public const string CreateWorkOrders = "CreateWorkOrders"; 

MainMenuは私が見つけたり編集したりできないクラスで参照されているようです。 NewMenuを定義している別のクラスを作成して、既存のnavigationproviderクラスでそれを設定できるようにするか、別のnavigationproviderクラスを作成する必要がありますか?

私が助けを求める前に十分な研究をしたことを誰もが確信しています。より詳細な文書へのリンクさえも役に立ちます。

+0

セットが受け入れソリューションとして答える@aaron。 –

答えて

0

あなたはこのように新しいメニューを追加することができます。

context.Manager.Menus.Add(WorkOrders, new MenuDefinition(WorkOrders, L(WorkOrders))); 

使用法:それが動作するかどう

context.Manager.Menus[WorkOrders].AddItem(...) 
+0

Intellisenseは「WorkOrders」が現在のコンテキストに存在しないと言っています。また、引数は です.Add(文字列キー、MenuDefinition値); これは、私が望む任意の文字列を使用できるはずではありませんか? –

+0

'const string WorkOrders =" WorkOrders "'を定義していませんか? – aaron

+0

しました。使用: context.Manager.Menus.Add(PageNames.WorkOrders、new MenuDefinition(PageNames.WorkOrders、L(PageNames.WorkOrders))); と思われます。私は進んでそれがどうなるか見てみましょう。 –

関連する問題