MVC3在ViewBag文本中添加换行符

Mik*_*ebb 7 c# text line-breaks viewbag asp.net-mvc-3

我有一个MVC3 C#.Net网络应用程序.我正在循环使用DataTable.有些行导入OK,有些则不是.我想以列表格式将错误列表发送回视图.我将以下文本分配给ViewBag属性

Input error on Row(1) Cell(3) Input string was not in a correct format.<br/> Input error on Row(4) Cell(3) Input string was not in a correct format.<br/>
Run Code Online (Sandbox Code Playgroud)

我希望br会在HTML中写一个换行符.它不是.我希望错误消息看起来像这样

Input error on Row(1) Cell(3) Input string was not in a correct format.
Input error on Row(4) Cell(3) Input string was not in a correct format.
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

dev*_*uck 14

当你进入视图时,请使用

@Html.Raw(ViewBag.Test)
Run Code Online (Sandbox Code Playgroud)

代替

@ViewBag.Test
Run Code Online (Sandbox Code Playgroud)

这将向编译器表明字符串是html并且不需要如此编码.


小智 8

使用a string[]来保存错误.这样,它们是一个格式良好且不同的错误集,而不仅仅是一个长字符串.

在Controller中,初始化ViewBag属性:

ViewBag.Errors = new string[] { "First error", "Second error" };
Run Code Online (Sandbox Code Playgroud)

在您的视图中,显示以下错误:

@foreach (string error in ViewBag.Errors)
{
    @Html.Label(error)
    <br />
}
Run Code Online (Sandbox Code Playgroud)

关注点分离

您不应该在Controller中处理标记布局(即换行符或任何其他DOM元素). 演示文稿应仅由View查看.这就是为什么最好通过一个string[].