我有一个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/>
我希望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.
有什么想法吗?
答案 0 :(得分:14)
当您进入视图时,请使用
@Html.Raw(ViewBag.Test)
而不是
@ViewBag.Test
这将向编译器表明字符串是html,并且不需要像这样编码。
答案 1 :(得分:8)
使用string[]
来保存您的错误。这样,它们就是一个结构良好且不同的错误集,而不仅仅是一个长字符串。
在您的Controller中,初始化ViewBag
属性:
ViewBag.Errors = new string[] { "First error", "Second error" };
在您的视图中,显示以下错误:
@foreach (string error in ViewBag.Errors)
{
@Html.Label(error)
<br />
}
您不应该在Controller 中处理标记布局(即换行符或任何其他DOM元素)。 演示文稿应仅由View 处理。这就是为什么最好传递string[]
。
答案 2 :(得分:0)
这对我有用:
控制器:
ViewBag.Msg += Environment.NewLine + "xxxx";
查看:
<p class="@ViewBag.MsgColor">
@Html.Raw(@ViewBag.Msg.Replace(Environment.NewLine, "<br/>"))
</p>
答案 3 :(得分:0)
我的首选方法是简单地将 <br />
添加到控制器代码中的行时间作为 ViewData["msg"] 然后可以从剃刀页面中提取,如下所示。
控制器代码:
ViewData["msg"] = "Your Query <br /> has been processed.";
剃刀表格代码:
@Html.Raw(@MsgFormatted)