0

ネストされたナビゲーション メニューを処理するカスタム ヘルパーを作成しています。関数に一連の配列 (または辞書) を渡す際に問題が発生しています。

以下は、ActionMenuItem への Razor 呼び出しです。

@Html.ActionMenuItem("All Reports", "index", "report", "icon-bar-chart", "last", new {"title" = "Report 1", "action" = "report1"}, new {"title" = "Report 2", "action" = "report2"})
public static MvcHtmlString ActionMenuItem(this HtmlHelper htmlHelper, String linkText, String actionName, String controllerName, String iconType = null, string classCustom = null, params Dictionary<string, string> subMenu)

私の機能は、辞書項目までうまく機能します。単一レベルのメニューを生成できますが、ネストされたメニューで動作させようとしています。

どんな助け、そしてレッスンも大歓迎です!

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

RD

4

3 に答える 3

1

次のようなことができますか?

public static MvcHtmlString ActionMenuItem(
    this HtmlHelper htmlHelper,
    String linkText,
    String actionName,
    String controllerName,
    String iconType = null,
    string classCustom = null,
    params KeyValuePair<string, string>[] subMenus)
{ ... }

var dict = new Dictionary<string, string>()
{
    { "a", "b" },
    { "c", "d" },
};

*.ActionMenuItem(*, *, *, *, *, dict.ToArray());
于 2013-10-13T03:39:33.233 に答える
0

キーワードDictionary<TKey, TValue>を使用してパラメーター配列として宣言することはできません。params

C#仕様によると:

修飾子で宣言されたparamsパラメーターは、パラメーター配列です。仮パラメーター リストにパラメーター配列が含まれる場合、それはリストの最後のパラメーターである必要があり、1 次元配列型である必要があります

Dictionary一次元配列ではありません。

2 つのプロパティを持つクラスを作成することができます: TitleandActionおよび パラメーターの型をMyClass[]ディクショナリの代わりに変更します。

于 2013-10-13T00:20:50.147 に答える
0

次のようなことを試してください:

    @Html.ActionMenuItem(
        "All Reports", 
        "index", 
        "report", 
        "icon-bar-chart", 
        "last", 
        new Dictionary<string, string>[]
        {
            new Dictionary<string, string>()
            {
                { "title", "Report 1" }, 
                { "action", "report1" }
            }, 
            new Dictionary<string, string>()
            {
                { "title",  "Report 2" },
                { "action", "report2" }
            }
        } )

    public static MvcHtmlString ActionMenuItem(
        this HtmlHelper htmlHelper, 
        string linkText, 
        string actionName, 
        string controllerName, 
        string iconType = null, 
        string classCustom = null, 
        params Dictionary<string, string>[] subMenu)
于 2013-10-13T01:13:11.387 に答える