2013-02-12 2 views
3

В моем контроллере я фильтрую список на основе параметров, которые пользователь сначала выбирает. Это похоже на поисковую систему.Отображать сообщение об ошибке при определенных условиях (пустой список)

Существует вероятность того, что список может вернуть 0 значений. Хотя это не ошибка, я хотел бы отобразить какое-то сообщение, например сообщение об ошибке, но все, что я нашел до сих пор, это использование ModelState или ModelStateDictionary в C#, которое также требует исключения. Но это не исключение, просто условие, поэтому я немного озадачен.

Я выпишу немного коды, так что вы будете визуально видеть то, что я хочу:

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

Права, что о том, что я хочу сделать. Как я могу продолжить? Спасибо за советы.

ответ

4

ModelState не требует исключения. Вы можете просто добавить ошибку ModelState с любым желаемым сообщением и использовать обычный метод для проверки ModelState.isValid, чтобы решить, следует ли продолжить или вернуться к представлению, чтобы показать ошибку.

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

В качестве альтернативы можно использовать ViewBag или ViewData в отверстие сообщения, а также.

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

Тогда в представлении они могут быть отображены

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

Оооо, я постараюсь это! Как вы уже упоминали, есть перегрузка, которая допускает строку. Я буду держать вас в курсе! – hsim

+0

Ну, эти 2, похоже, работают, но после этого на веб-странице ничего не отображается. Нужно ли мне что-то настраивать в файле .cshtml? – hsim

+0

@ HervéSimard Да, конечно, см. Править выше –

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 
} 

Index Просмотр

@if (ViewBag.Error != null) 
{ 
    <h3 style="color:red">@ViewBag.Error</h3> 
} 
Смежные вопросы