MVC3 Razor: как проверить, пуста ли модель - PullRequest
9 голосов
/ 09 декабря 2011

Я пытался использовать! Model.Any (), он не работает, так как модель не имеет расширения Any. Как решить? Вот мой фрагмент кода.

    @model MyModel.Work
    @if ( !Model.Any() )
    {
       <script type="text/javascript">
             alert("Model empty");
       </script>
    }
    else
    {
       <script type="text/javascript">
              alert("Model exists");
       </script>
    }

Ответы [ 6 ]

27 голосов
/ 09 декабря 2011

Мне кажется, что вы создаете экземпляр модели, но хотите проверить, не заполнена ли она.

Мой стандартный способ сделать это - создать свойство bool с именем Empty, которое дает только get, а затем вернуть проверку, необходимую для проверки, не заданы ли другие свойства.

Скажем, у вас есть класс Customer в качестве вашей модели:

public class Customer
{
    public int CustomerId {get;set;}
    public string FirstName {get;set;}
    public string LastName {get;set;}
    public string Email {get;set;}

    public bool Empty
    {
        get { return (CustomerId == 0 && 
                      string.IsNullOrWhiteSpace(FirstName) &&
                      string.IsNullOrWhiteSpace(LastName) &&
                      string.IsNullOrWhiteSpace(Email));         
            }
    }
}

Теперь в вашей модели вы просто звоните:

@model MyModel.Work
@if (Model.Empty)
{
   <script type="text/javascript">
         alert("Model empty");
   </script>
}
else
{
   <script type="text/javascript">
          alert("Model exists");
   </script>
}
13 голосов
/ 03 сентября 2013

Вы можете попробовать это:

@if (Model.Count == 0)
{

}
9 голосов
/ 09 декабря 2011

как насчет этого:

if(Model == null)
{
}
3 голосов
/ 18 мая 2018

@if(!Model.Any()){} работает, когда вы передаете список данных в качестве модели. Если вы пытаетесь проверить, является ли модель пустой, которая не является списком и может содержать одну запись или нет, тогда я обычно использую @if(Model == null).

Надеюсь, это поможет:)

0 голосов
/ 21 марта 2019

Комбинация информации из предыдущих ответов сработала для меня.

@if (Model != null && Model.Count() != 0)
{
   <ul>
       <li><strong>Hello World</strong></li>
   </ul>
}

Удачи.

0 голосов
/ 30 августа 2014

У меня была такая же проблема. Я не знаю, имеет ли это значение, но я использую MVC5. Я забыл отправить что-нибудь из контроллера на просмотр. Так как я поставил "return View (myList);" в моем контроллере метод .Any () работает нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...