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 回答