mvc可以提价html标签,Razor三元运算符呈现HTML标签(ASP.NET MVC)

我正在尝试将响应式设计应用于asp.net mvc 4应用程序。我想循环模型并每行渲染3个项目。每行应以div包裹。结果应如下所示:

...

为此,我尝试使用三元运算符:

@{ var i = 0; }

@foreach (var item in Model)

{

@Html.Raw(i == 0 ? Html.Encode("") :"")

//Responsive Content comes here

@Html.Raw(i == 2 ? Html.Encode("") :"")

@(i<3 ? i++ : i=0)

}

现在我有两个问题:

三元运算符应呈现的HTML标记为纯文本。我尝试了@Html.Raw和@Html.Encode与字符串的不同组合,但是对我没有用

似乎最后一个三元运算符呈现了变量i的当前值。我该如何预防?

附加信息/代码说明

逻辑已经可以正常工作:

i变量是计数变量。

If i = 0我首先渲染包装器的开始标签,然后渲染当前的model.item

If i = 1我只渲染当前的model.item

If i = 2我首先渲染当前的model.item,而不是结束标记

谢谢

更新

MajoB和Chris Pratt的方法基本上都起作用。由于MajoB的解决方案更加详细,因此我选择了该解决方案。

但是,我必须进行一些修改才能使其正常工作:

在控制器上,我必须确保返回的是IList,而不是IEnumberable

public ActionResult Index()

{

return View(db.leModel.ToList());

}

在视图上,我必须更改签名(例如1.,使用IList而不是IEnumerable)

@model IList

剃刀代码上的各种修改(否则将抛出异常)

最终代码:

@for (var i = 0; i < Model.Count; i++)

{

// the lambda expression modelItem => item.leProperty did not work for some reason. So I had to replace the item with Model[i], which means, the following line is not neccessary

{ var item = Model[i]; }

@Html.DisplayFor(modelItem => Model[i].leProperty)

if ((i + 1) % 3 == 0 || i == (Model.Count - 1))

{

@:

if (Model.Count + 1 - i >= 3)

{

@:

}

}

}

感谢大伙们 :)

@(stuff)告诉Razor打印输出。 尝试@{stuff}代替:-)

这是处理此问题的常用方法:

@for (var i = 0; i < Model.Count; i++)

{

@if ((i + 1) % 3 == 0)

{

@:

}

}

每隔第三个项目,包装div就会关闭并再次打开。 @:阻止Razor尝试解析此行,因此它不会引发错误的语法错误。

没有包装div的解决方案:

@for(var i = 0; i < Model.Count; i++)

{

@{ var item = Model[i]; }

@if((i+1) % 3 == 0)

{

}

}

包装器解决方案:

@for(var i = 0; i < Model.Count; i++)

{

@{ var item = Model[i]; }

@if((i+1) % 3 == 0 || i == (Model.Count-1)) // in case you have for example 7 items in your list

{

@:

@if (i != Model.Count-1)

{

@:

}

}

}

由于我的模型是IEnumerable,因此出现异常"无法将索引应用于类型为... ienumerable的表达式",该如何解决呢?

您可以更改模型以列出Model.ToList()或使用问题中的foreach方法。

为了使其能够正常工作,必须进行一些修改。 我用我完成的任务来更新我的问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值