我正在解析控制器中的JSON文件,并具有try/catch功能。 JSON 的捕获填充了 ViewBag,如果出现错误,我想在视图中打印它。 但是,ViewBag.Error 不会打印到屏幕上。 我闯入视图,字符串就在那里。它只是不打印。
这是来自控制器的相关代码:
catch (JsonReaderException jex)
{
ViewBag.Error = "JSON Parsing Error: " + jex.Message;
return View();
}
这是我的观点:
@if ((string)ViewBag.Error != "")
{
@Html.Label((string)ViewBag.Error)<br>
}
问题出在异常消息中的句点(.(字符上。查看 json 异常消息,您通常会在其中找到一个点(.(。
HTML 标签元素会混淆,如果你有一个点 . 在第一个参数中,因为它需要那里的属性表达式。
请改用Label(string expression, string labelText)
。
例如:@Html.Label("",ViewBag.Error)
正如@sLaks所指出的...HTML。Raw 不是用于此目的的合适元素。
您应该直接打印值:
@ViewBag.Error
不要调用Html.Raw()
,因为你的值不是 HTML。
ViewData 和 TempData 需要类型转换和空检查,而 ViewBag 不需要这样的检查。
如果您有兴趣了解更多信息,请参考这里:http://www.binaryintellect.net/articles/36941654-8bd4-4535-9226-ddf47841892f.aspx
所以在你看来,你可以简单地写成下面:
@ViewBag.Error
要显示错误消息的任何位置。
希望有帮助
谢谢
卡尔西克