0

次の関数を使用して、ビューでルート値を返そうとしています。

見る:

@functions {    
    public Dictionary<string, object> GetFilters()
    {
        var filters = new Dictionary<string, object>();
        var f_phrase = this.Request["f_phrase"] ?? string.Empty;
        var f_site = this.Request["f_site"] ?? string.Empty;
        var f_device = this.Request["f_device"] ?? string.Empty;
        var f_startdate = this.Request["f_startdate"] ?? string.Empty;
        var f_enddate = this.Request["f_enddate"] ?? string.Empty;
        var f_package = this.Request["f_package"] ?? string.Empty;

        filters.Add("f_phrase", f_phrase);
        filters.Add("f_site", f_site);
        filters.Add("f_device", f_device);
        filters.Add("f_startdate", f_startdate);
        filters.Add("f_enddate", f_enddate);
        filters.Add("f_package", f_package);

        return filters;
    }
}

次に、私のリンクでこれを実行できるようにします。

@Html.ActionLink("Export file", "Export", "Log", new { @GetFilters() }, new { @class="iconDocumentText"})

しかし、動作しません。

4

1 に答える 1

0

パラメータに関するMSDNから:routeValues

ルートのパラメータを含むオブジェクト。パラメータは、オブジェクトのプロパティを調べることにより、リフレクションによって取得されます。オブジェクトは通常、オブジェクト初期化構文を使用して作成されます。

したがって、ディクショナリを返す代わりに、オブジェクトを作成して返す必要があります(確かではありませんが、dynamic/を使用してこれを実現するExpandoObjectか、ルート値に従って名前が付けられたプロパティを使用してカスタムタイプを作成することができます)。

例:

public class FilterRouteValues
{
    public string f_phrase { get; set; }
    // ...
}

public FilterRouteValues GetFilters()
{
    // Read from request, fill an instance of FilterRouteValues
}

マークアップ:

@Html.ActionLink("Export file", "Export", "Log", GetFilters(), ...)
于 2012-12-14T10:26:32.950 に答える