Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在asp.net mvc4应用程序中向HtmlHelper添加扩展方法_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 4_Razor - Fatal编程技术网

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

C# 在asp.net mvc4应用程序中向HtmlHelper添加扩展方法,c#,asp.net,asp.net-mvc,asp.net-mvc-4,razor,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);

我想为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类型

  • 这一错误的原因是什么
  • 我怎样才能修好它
  • 编辑

    完整视图的代码:

        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>
            }
        }
    }
    
    使用(var table=@Html.table(“table_数据”)){
    描述
    客户
    客户地位
    埃塔德试验
    对于(int i=Model[2]-5;i
    您的方法返回一个
    字符串
    ,当您在C#中使用
    using
    时,这意味着您正在初始化一个实现了
    IDisposable
    的对象,而
    字符串
    没有

    您也没有对字符串执行任何操作。如果您打算构建一个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")){
    }
    

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

    您的方法返回一个
    字符串
    ,当您在C#中使用
    时,这意味着您正在初始化一个实现
    IDisposable
    的对象,而
    字符串
    没有

    您也没有对字符串执行任何操作。如果您打算构建一个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")){
    }
    

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

    如果您为htmlhelper(而不是html表)添加扩展方法,还可以查看有关为什么要使用
    的更多信息?您可以将创建html移动到帮助器,并返回带有生成html的字符串,而无需对象。您可以为htmlhelper(而不是html表)添加扩展方法,还可以查看有关为什么要使用
    的更多信息?您可以将创建html移动到您的帮助程序,并返回带有生成html的字符串,而不使用ObjectThank@Roy,但它不起作用,因为:生成的html不包含表,css类也没有添加到table@Lamloumi:上面的代码没有生成HTML,您仍然需要在
    {
    }之间添加代码
    括号用于处理
    变量。@Lamloumi:您不在任何地方使用
    变量,因此它当然不会生成
    标记。此外,您问题中的代码不可能是完整的
    视图
    代码——Razor将无法以这种方式解析它。这里有一篇关于MVC4中Razor的文章:谢谢@Roy,但它不起作用,因为:生成的html不包含表,css类也没有添加到table@Lamloumi:上面的代码没有生成HTML,您仍然需要在
    {
    }之间添加代码
    括号用于处理
    变量。@Lamloumi:您不在任何地方使用
    变量,因此它当然不会生成
    标记。此外,您问题中的代码不可能是完整的
    视图
    代码——Razor将无法以这种方式解析它。下面是一篇关于MVC4中Razor的文章: