C# VisualStudio自动格式化不';我不能正确格式化我的razor代码
我正在使用C# VisualStudio自动格式化不';我不能正确格式化我的razor代码,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我正在使用@:正确显示一些引导列。这是我正在使用的代码: var i = 0; <div class="container-fluid"> <div class="row show-grid"> @foreach (var one in Model) { if (i % 3 == 0) { @:<div class="row show-grid
@:
正确显示一些引导列。这是我正在使用的代码:
var i = 0;
<div class="container-fluid">
<div class="row show-grid">
@foreach (var one in Model)
{
if (i % 3 == 0)
{
@:<div class="row show-grid">
}
<div class="one-element col-md-4">
@one.Title
</div>
if ((i + 1) % 3 == 0)
{
@:</div>
}
i++;
}
</div>
</div>
为此:
@:
</div>
@:
然后应用程序就不再工作了
这是怎么解决的?我用
@Html.Raw()
这样解决的:
var i = 0;
<div class="container-fluid">
<div class="row show-grid">
@foreach (var one in Model)
{
if (i % 3 == 0)
{
@Html.Raw("<div class=\"row show-grid\">")
}
<div class="one-element col-md-4">
@one.Title
</div>
if ((i + 1) % 3 == 0)
{
@Html.Raw("</div>")
}
i++;
}
</div>
</div>
var i=0;
@foreach(模型中的var 1)
{
如果(i%3==0)
{
@Html.Raw(“”)
}
@一、标题
如果((i+1)%3==0)
{
@Html.Raw(“”)
}
i++;
}
我想这是最好的了
但是如果有人知道一种更优雅的方法,请告诉我。这里的问题似乎是,如果(i%3==0)但如果((i+1)%3==0)在相同的条件下,你没有关闭
如果((i+1)%3==0)
这意味着您可能有一个永远不会关闭的开始
,或者一个永远不会打开的结束
您可以尝试以下方法:
var i = 0;
<div class="container-fluid">
<div class="row show-grid">
@foreach (var one in Model)
{
<div class="one-element col-md-4">
@one.Title
</div>
if (i % 3 == 0)
{
<div class="clear"></div>
}
i++;
}
</div>
</div>
var i=0;
@foreach(模型中的var 1)
{
@一、标题
如果(i%3==0)
{
}
i++;
}
也许这就是你遇到麻烦的地方!
我更新了你的评论。
更新@Alexei Levenkov
评论。我也在寻找更好的方法。当我需要每行3列时,我在项目中就是这样做的。好的,我现在明白了,我错了
标记,并且:
在Razor中,标签必须正确嵌套<代码>
不可用
正确的筑巢
解决问题的最佳方法@Alexei Levenkov提到:
<div class="container-fluid">
<div class="row show-grid">
@foreach (var one in Model.Select((value, index) => new { value, index }).GroupBy(x => x.index / 3))
{
<div class="row show-grid">
@foreach (var el in one.Select(x => x.value))
{
<div class="one-element col-md-4">
@el.Title
</div>
}
</div>
}
</div>
</div>
@foreach(Model.Select((value,index)=>new{value,index}).GroupBy(x=>x.index/3)中的var-one)
{
@foreach(一个变量el.Select(x=>x.value))
{
@el.标题
}
}
但是,根据你的
Html.Raw()
方法很好。我知道。。。但是如果我在if语句中打开和关闭标记,我应该如何使每行3列工作呢?我更新了代码以反映每行3列。这个代码对我有用。您可以在3个元素之后清除行,这将使您返回到新的行。考虑删除对OP代码的正确性的完全不公平声明…也不是说您的更改生成的标记与OP完全不同,所以我认为downvote仍然是合理的。谢谢。我想这也行得通,但这不是引导标准:我希望引导代码是干净的(没有黑客)。旁注:我认为按3分组并使用正常的Razor结构进行渲染比使用不匹配的标记进行黑客攻击要好得多。。。但这确实是一种选择。@AlexeiLevenkov听起来不错。你能提供一个例子或一个例子的链接吗?items.Select((value,index)=>new{value,index}).GroupBy(x=>x.index/3)
或许多其他变量开始。。。搜索-我用了Codemaid
你刚刚复制了Alexei Levenkov
的答案/评论。我认为他应该得到表扬。也许他甚至会把它写下来作为答案。
<div class="container-fluid">
<div class="row show-grid">
@foreach (var one in Model.Select((value, index) => new { value, index }).GroupBy(x => x.index / 3))
{
<div class="row show-grid">
@foreach (var el in one.Select(x => x.value))
{
<div class="one-element col-md-4">
@el.Title
</div>
}
</div>
}
</div>
</div>