C# MVC3在ViewBag文本中添加换行符
我有一个MVC3 C#.Net web应用程序。我在一个数据表中循环。有些行正在导入OK,有些行未导入OK。我想以列表格式将错误列表发送回视图。我正在将以下文本指定给ViewBag属性C# MVC3在ViewBag文本中添加换行符,c#,asp.net-mvc-3,text,line-breaks,viewbag,C#,Asp.net Mvc 3,Text,Line Breaks,Viewbag,我有一个MVC3 C#.Net web应用程序。我在一个数据表中循环。有些行正在导入OK,有些行未导入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.<
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/>
有什么想法吗?使用
字符串[]
保存错误。这样一来,它们是一组格式良好且不同的错误,而不仅仅是一个长字符串
在控制器中,初始化ViewBag
属性:
ViewBag.Errors = new string[] { "First error", "Second error" };
在您的视图中,显示以下错误:
@foreach (string error in ViewBag.Errors)
{
@Html.Label(error)
<br />
}
@foreach(ViewBag.Errors中的字符串错误)
{
@Html.Label(错误)
}
关注点分离
您不应该在控制器内处理标记布局(即换行符或任何其他DOM元素)。演示文稿应由视图单独处理。这就是为什么最好传递一个
字符串[]
当您在视图中抛出时,使用
@Html.Raw(ViewBag.Test)
而不是
@ViewBag.Test
这将向编译器表明字符串是html,不需要这样编码。这对我来说很有用:
控制器:
ViewBag.Msg += Environment.NewLine + "xxxx";
视图:
@Html.Raw(@ViewBag.Msg.Replace(Environment.NewLine,“
”)
我的首选方法是在控制器代码中的行时间中添加一个
,作为ViewData[“msg”],然后从razor页面中提取,如下所示
控制器代码:
ViewData["msg"] = "Your Query <br /> has been processed.";
@Shark…我选择这个答案是基于你的“关注点分离”mentioned@MikeTWebb当然,我坚信美国MVC开发者应该严格遵守这一点。它允许容易维护的代码。@post…这是可行的,但再次决定将标记语言保留在视图中,而不是控制器中。谢谢你能给答案加些解释吗?
<p class="@ViewBag.MsgColor">
@Html.Raw(@ViewBag.Msg.Replace(Environment.NewLine, "<br/>"))
</p>
ViewData["msg"] = "Your Query <br /> has been processed.";
@Html.Raw(@MsgFormatted)