40

我已经尝试了针对其他类似问题提出的所有解决方案,但它们似乎都不起作用。本质上,我正在尝试显示一个表格,其中填充了来自模型集合的数据。这本身不是问题,但是我想强制 razor 始终在 3 列中生成它(无论我们有多少元素)。我最初的想法是这样做:

 <table class="projects-grid">
    <tr>
    @for(int i = 0; i< Model.Count(); i++) 
     {
         if (i != 0 && i % 3 == 0) 
         {
             Html.Raw("</tr><tr>");
         }
        var item = Model.ElementAt(i);
        <td class="project-tile"> 
            @Html.DisplayFor(modelItem => item.Title)                
        </td>        
    }
    </tr>    
</table>

因此,本质上,我希望 Razor 每隔三个元素输出“”字符串以向表中添加另一行。除了页面源中不存在此刺痛之外,一切似乎都运行良好。在调试中我可以看到这一行

 Html.Raw("</tr><tr>");

实际调用,但生成的页面中没有输出。

有什么帮助吗?提前谢谢了....

4

6 回答 6

78

它不输出的原因是因为正在执行剃刀语法的上下文。在您的if块中,所有代码都像在常规 C# 上下文中一样运行,并且该行:

Html.Raw("</tr><tr>");

返回 anMvcHtmlString但你没有用它做任何事情。您需要输入一个输出上下文:

@Html.Raw("</tr><tr>");
于 2013-07-21T13:02:16.897 回答
3

我会使用解决方法。

尝试:

<table class="projects-grid">
    <tr>
    @for(int i = 0; i< Model.Count(); i++) 
     {
         if (i != 0 && i % 3 == 0) 
         {
             <text>
             @Html.Raw("</tr><tr>")
             </text>
         }
        var item = Model.ElementAt(i);
        <td class="project-tile"> 
            @Html.DisplayFor(modelItem => item.Title)                
        </td>        
    }
    </tr>    
</table>

希望能帮助到你。

于 2013-07-21T12:59:21.057 回答
0

用 @( 和 ) 封闭 Html.Raw 为我解决了这个问题。即使有外部的 @{ 和 } ,它仍然需要在每个 Html.Raw 语句周围使用 @( 和 )。

于 2018-03-29T23:32:07.690 回答
0

Html.Raw

将 HTML 标记包装在 HtmlString 实例中,以便将其解释为 HTML 标记。例如 :

控制器

public actionresult Htmlraw()
{
    viewbag.message = "Hey friends lets go" + "<br />" + "for chillout";
    return view();
}

输出

@html.raw(viewbag.message);
于 2017-08-08T08:21:41.710 回答
0

Html.Raw 实际上用于换行,就像你在 c# 中使用 /n 所做的那样

例如:

<text>
@html.raw("</tr><tr>")
</text>

我希望它有所帮助。

于 2017-07-20T07:51:07.817 回答
0

确保“<”和标签的第一个字符之间没有空格

我有“<a href="...,在制作后"<a href="...它起作用了

于 2021-05-18T15:23:58.830 回答