mvc函数内部视图返回路由值

时间:2012-12-14 10:21:42

标签: asp.net-mvc asp.net-mvc-4 asp.net-mvc-routing

我正在尝试使用函数在视图中返回路由值:

查看:

@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"})

但不起作用。

1 个答案:

答案 0 :(得分:0)

来自routeValues参数的MSDN

  

包含路径参数的对象。参数是   通过检查的属性通过反射检索   宾语。通常使用对象初始化程序创建对象   语法。

所以你需要构造一个对象并返回它而不是返回一个字典(不确定,但也许你可以使用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(), ...)