MVC3 Razor:如何检查模型是否为空

时间:2011-12-09 16:44:33

标签: asp.net-mvc-3 razor

我尝试过使用!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>
    }

7 个答案:

答案 0 :(得分:26)

听起来像你正在实例化模型,但想检查并查看它是否已填充。

我这样做的标准方法是创建一个名为bool的{​​{1}}属性,只给出一个get,然后返回你需要检查是否没有设置其他属性。

假设您有一个Customer类作为您的模型:

Empty

现在在您的模型中,您只需致电:

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));         
            }
    }
}

答案 1 :(得分:12)

你可以试试这个:

@if (Model.Count == 0)
{

}

答案 2 :(得分:9)

怎么样:

if(Model == null)
{
}

答案 3 :(得分:3)

当您将数据列表作为模型传递时,

@if(!Model.Any()){}有效。如果你试图检查模型是否为空而不是列表并且可能包含单个记录或者没有,那么我通常使用@if(Model == null)

希望有所帮助:)

答案 4 :(得分:0)

我遇到了同样的问题。我不知道它是否重要,但我使用的是MVC5。我忘了从控制器向视图发送任何内容。因为我把&#34;返回View(myList);&#34; 在我的控制器中,方法.Any()工作正常。

答案 5 :(得分:0)

以前的答案中的信息组合对我有用。

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

祝你好运。

答案 6 :(得分:0)

    `
    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    using System.Linq;
    using System.Web;
    
    namespace APIPractice.Models.EmployeeModel
    {
        public class LoginModel
        {
            [Key]
            public int Id { get; set; }
    
            [Required]
            public string Username { get; set; }
    
            [Required]
            public string Password { get; set; }
    
            [Required]
            public string RePassword { get; set; }
    
            [Required]
            public int IsActive { get; set; }
    
            public bool Empty
            {
                get
                {
                    if (
                            string.IsNullOrWhiteSpace(Username) ||
                            string.IsNullOrWhiteSpace(Password) ||
                            string.IsNullOrWhiteSpace(RePassword) ||
                            IsActive == 0
                          )
                    {
                        return false;
                    }
                    else
                    {
                        return true;
                    };
                }
            }
    
        }
    }`
    
and in your controller

    `if (loginModel.Empty)
    { 
        //your success code.
    }else{
        //Your fail msg.
    }`