在asp.net mvc4应用程序中向HtmlHelper添加扩展方法

时间:2014-01-14 08:55:49

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

我想为html帮助器添加一个扩展方法来自定义表,我添加了这个方法:

public static class HtmlElements
    {
        public static string Table(this HtmlHelper ht, string classe)
        {
            var table = new HtmlTable();
            table.Attributes.Add("class", classe);
            return table.InnerHtml;
        }

    }

当我想像这样使用它时

 @using(@Html.Table("table_data")){
}

我有一个错误,表明我必须将字符串转换为IDisposable类型。

  1. 出现此错误的原因是什么?
  2. 我该如何解决?
  3. 修改

    完整视图的代码:

        using(var table = @Html.Table("table_data")){
    
            <tr>
                 <th>Description</th>
                <th>Client</th>
                <th>Statut du client</th>
                <th>Etat de test</th>
                <th></th>
            </tr>
    
        for (int i = Model[2] - 5; i < Model[2]; i++)
        {
            if(i < Model[1].Count)
            {
            <tr style="font-size: 12px; padding:0px; ">
                 <td>@Model[0][i].PDescription</td>
                <td>@Model[0][i].Nom_client</td>
                 <td>@Model[0][i].Statut_client</td>
                 <td style="color:red">@Model[1][i]</td>
                 <td>
                    @Model[0][i].Statut_client
                 </td>
          </tr>
            }
        }
    }
    

2 个答案:

答案 0 :(得分:3)

您的方法返回string,当您在C#中使用using时,这意味着您正在实例化实现IDisposable的对象,string不会。{ / p>

你也没有对字符串做任何事情。如果您打算构建一个HtmlTable并对其执行某些操作,则必须修改代码,例如:

    public static HtmlTable Table(this HtmlHelper ht, string classe)
    {
        var table = new HtmlTable();
        table.Attributes.Add("class", classe);
        return table;
    }

然后你必须在你的代码中使用它,如下所示:

@using(var table = @Html.Table("table_data")){
}

在括号内,您现在可以访问变量table

答案 1 :(得分:1)

public static class HtmlElements
{
    public static HtmlTable Table(this HtmlHelper ht, string classe)
    {
        var table = new HtmlTable();
        table.Attributes.Add("class", classe);
        return table;
    }
}