如何打印填充在 try/catch 块中的 ViewBag 字符串



我正在解析控制器中的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

要显示错误消息的任何位置。

希望有帮助

谢谢

卡尔西克

最新更新