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

时间:2017-06-13 20:59:33

标签: c# json asp.net-mvc

我在我的控制器中解析JSON文件并具有try / catch功能。 JSON的catch捕获ViewBag,如​​果出现错误,我想在视图中打印它。但是ViewBag.Error不会打印到屏幕上。我闯入视野,字符串就在那里。它只是不打印。

这是Controller的相关代码:

catch (JsonReaderException jex)
{
            ViewBag.Error = "JSON Parsing Error: " + jex.Message;
            return View();
 }

这是我的观点:

@if ((string)ViewBag.Error != "")
{
   @Html.Label((string)ViewBag.Error)<br>
}

3 个答案:

答案 0 :(得分:1)

问题在于你的异常消息中的句点(。)字符。看看json异常消息,你通常会在其中找到一个点(。)。

如果你有一个观点,那么HTML标签元素会变得混乱。在第一个参数中,因为它需要一个属性表达式。

请改用In[38]: crops['Indiana']['Genetically engineered (GE) corn'][2015] Out[38]: 88 实施例:Label(string expression, string labelText)

正如@sLaks指出的那样..HTML.Raw不适合用于此目的。

答案 1 :(得分:0)

您应该直接打印该值:

@ViewBag.Error

请勿致电Html.Raw() ,因为您的值不是HTML。

答案 2 :(得分:0)

ViewData和TempData需要进行类型转换和空检查,而ViewBag不需要进行此类检查。

如果您对更多信息感兴趣,请参阅此处:http://www.binaryintellect.net/articles/36941654-8bd4-4535-9226-ddf47841892f.aspx

因此,在您看来,您可以简单地写下面的内容:

   @ViewBag.Error

您希望在何处显示错误消息。

希望它有用

由于

KARTHIK