2013-02-12 55 views
3

在我的控制器中,我根據用戶首先選擇的參數篩選列表。這就像一個搜索引擎。在特定條件下顯示錯誤消息(空列表)

該列表可能返回0值。雖然這不是錯誤,但我想顯示某種消息,如錯誤消息,但迄今爲止我發現的所有消息都是在c#中使用ModelState或ModelStateDictionary,這也需要一個異常。但這也不例外,只是一個條件,所以我有點困惑。

我會寫了一些代碼,這樣你就會直觀地看到我想要的東西:

if(listOBJS.count == 0) 
    { 
     // DISPLAY THE ERROR! 
     PopulateDDL1(); 
     PopulateDDL2(); 
     return View(listOBJS); 
    } 

沒錯,那什麼,我想做的事情。我怎麼能繼續?感謝您的建議。

回答

4

ModelState不需要例外。 您可以隨意添加Modelstate錯誤,並使用常規方法檢查ModelState.isValid以決定是繼續,還是返回到視圖以顯示錯誤。

ModelState.AddModelError("", "Your Error Message"); 

或者,你可以使用ViewBagViewData到孔的消息,也是如此。

ViewBag.ErrorMessage = "Your Error Message"; 
ViewData["ErrorMessage"] = "Your Error Message"; 

然後在視圖中可以顯示這些

@Html.ValidationMessage("ModelName") 
@ViewData["ErrorMessage"] 
@ViewBag.ErrorMessage 
+0

哦,我來試試這個!正如你所提到的,有一個允許字符串的重載。我會及時通知你的! – hsim 2013-02-12 20:49:39

+0

那麼,這2個似乎工作,但後來沒有任何顯示在網頁上。我是否也需要在.cshtml文件中設置一些內容? – hsim 2013-02-12 20:52:27

+0

@HervéSimard是的,當然,看看上面的編輯 – 2013-02-12 21:00:13

1

如果沒有傳遞模型,不想用的ModelState檢查你可以傳遞任何消息ViewBag並在視圖檢查爲它的價值。如果它在那裏,那麼在視圖中顯示它。

控制器:

public FileResult Download(string fileName) 
{ 
    if (string.IsNullOrEmpty(fileName) || !File.Exists(fileName)) 
    { 
     ViewBag.Error = "Invalid file name or file path"; 
     RedirectToAction("Index"); 
    } 

    // rest of the code 
} 

索引視圖

@if (ViewBag.Error != null) 
{ 
    <h3 style="color:red">@ViewBag.Error</h3> 
}