2017-06-13 127 views
0

我正在解析控制器中的JSON文件,並具有try/catch功能。 JSON的捕獲填充ViewBag,如​​果出現錯誤,我想在視圖中打印它。但ViewBag.Error不會打印到屏幕上。我闖入視野,弦在那裏。它只是不打印。如何打印在try/catch塊中填充的ViewBag字符串

這是從控制器相關代碼:

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

這是我的看法:

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

你misunderstading'@ Html.Label'。只需直接打印。 – SLaks

+0

@SLaks他可能會用它來造型,雖然我懷疑它。動態類型的轉換不是必需的。仍然不應該停止打印文本。 –

+1

您可以使用'@ Html.Raw'代替標籤並嘗試使用它。像這樣的東西 '@ Html.Raw((string)ViewBag.Error)' – ISHIDA

回答

0

你應該只直接打印值:

@ViewBag.Error 

不要請致電Html.Raw(),因爲您的值不是HTML。

1

問題在於異常消息中的句點(。)字符。查看json異常消息,並且通常會在其中找到一個點(。)。

如果您有一點,HTML標籤元素會感到困惑。在第一個參數,因爲它期望在那裏有一個屬性表達式。

改爲使用Label(string expression, string labelText)
例如:@Html.Label("",ViewBag.Error)

正如@sLaks指出的那樣.HTML.Raw並不是適用於此目的的元素。