我有这个:
@model IEnumerable<MVPTracker.Models.DashboardResult>
@using MVPTracker.Models;
@{
int row = 0;
ViewBag.Title = "DashboardList";
Layout = "~/Views/Shared/_Layout.cshtml";
string top = "<div class='row'> ";
string Bot = "</div> ";
}
<div class="wrapper wrapper-content animated fadeInRight">
<div class="row">
<div class="col-lg-12">
<div class="ibox float-e-margins">
<div class="ibox-content">
<div class="wrapper wrapper-content animated fadeInRight">
@{
foreach (var item in Model)
{
if (row == 0)
{
Html.Encode(top);
}
<div class="col-md-3">
<div class="ibox">
<div class="ibox-content product-box">
<div class="product-imitation">
<img src="~/Images/App/EventHeader.jpg" width="100%" />
</div>
<div class="product-desc">
<span class="product-price">
@Html.DisplayFor(modelItem => item.Sport.Name)
</span>
<a href="@Url.Action("ViewResults", "Results", new { key = Functions.encrypt(item.DashboardResultID.ToString()) })" class="product-name"> @Html.DisplayFor(modelItem => item.EventName)</a>
<div class="small m-t-xs">
<strong>Desc:</strong> @Html.DisplayFor(modelItem => item.Description) <br />
<strong>Date:</strong> @Html.DisplayFor(modelItem => item.EventDate)
</div>
<br />
<div class="m-t text-righ">
<a href="@Url.Action("UploadResults", "Results", new { key = Functions.encrypt(item.DashboardResultID.ToString()) })" class="btn btn-xs btn-outline btn-primary">Upload Results <i class="fa fa-long-arrow-right"></i> </a>
<a href="@Url.Action("ViewResults", "Results", new { key = Functions.encrypt(item.DashboardResultID.ToString()) })" class="btn btn-xs btn-outline btn-primary">View Results <i class="fa fa-long-arrow-right"></i> </a>
</div>
</div>
</div>
</div>
</div>
if (row == 3)
{
Html.Encode(Bot);
row = 0;
}
else
{
row++;
}
}
}
</div>
</div>
</div>
</div>
</div>
我有2个变量有一个div片段,我必须打印open div并在行已满时关闭div,实际代码我无法做到,我尝试了另外一些东西(HTMLString,HTML.Raw .. 。)但没有任何作用,你能帮我一把吗?
谢谢!
答案 0 :(得分:1)
顾名思义,Html.Encode
方法将对输入进行编码。如果您尝试将变量中的HTML呈现为页面的HTML,则可以使用Html.Raw
方法。
Html.Raw方法不做html编码。因此,请确保将安全的HTML传递到此页面,以防止可能的脚本注入。
<div class="wrapper wrapper-content animated fadeInRight">
@foreach (var item in Model)
{
if (row == 0)
{
@Html.Raw(top);
}
<div>some html</div>
if (row == 0)
{
@Html.Raw(Bot);
}
row++;
}
</div>
答案 1 :(得分:0)
我发现您的代码存在一些问题。
在
if (row == 0)
{
Html.Encode(top);
}
您不在C#和标记模式之间切换,因此(错误调用)Html.Encode()
的结果将丢失。
将此代码更改为
if (row == 0)
{
<text>@Html.Raw(top)</text>
}
以if (row == 3)
开头的代码也是如此。
接下来,如果循环以值top
结束,您似乎无法在<div>
循环后关闭开头for
row != 3
。
您应始终使用View source code
或类似内容检查呈现的HTML。我注意到Firefox指示哪些不匹配的标签已被“修复”,即插入了关闭标签等。可能其他浏览器具有类似的功能。
答案 2 :(得分:0)
您可以仅省略 DisplayFor 和 modelItem => ,因此:
@Html.Raw(item.Description)