如何在视图中调用带有“params”参数的方法?

时间:2011-07-05 06:37:12

标签: c# .net asp.net asp.net-mvc

我的扩展方法的定义是:

public static class HtmlHelperExtensions
{
    public static Boolean MatchRoute(this HtmlHelper Html, 
                                     BaseViewModel   Model, 
                                     String          ControllerName, 
                                     params          String[] ActionNames)
    {
        ...
    }
}

这就是我在视图中使用的方式

<li class="questions <% = Html.GetSelectedClass(Model, "questions", "viewquestion", "index") %>">

但是由于某些奇怪的原因,当调用该方法时,ActionNames的2个参数中的第一个传递给该方法。发生了什么事?

1 个答案:

答案 0 :(得分:2)

不知道但这应该有效。您所看到的是在您的视图中调用Html.GetSelectedClass并在您的扩展方法中调用MatchRoute并返回布尔值而不是字符串。此外,如果您的视图是强类型的,您不需要传递模型,您可以这样做:

public static class HtmlHelperExtensions
{
    public static MvcHtmlString GetSelectedClass(
        this HtmlHelper<BaseViewModel> html, 
        string controllerName, 
        params string[] actionNames
    )
    {
        BaseViewModel model = html.ViewData.Model
        ...
    }
}

然后:

<%= Html.GetSelectedClass("questions", "viewquestion", "index") %>