将数据传递到ASP.NET MVC5中的Razor View

时间:2018-06-12 02:17:04

标签: c# asp.net-mvc razor

我正在尝试学习ASP.NET并尝试一些基本的操作,例如将硬编码数据传递给Razor视图。

我在模型中有一个简单的类:

public class Customer
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }

在我的CustomersController中,我有这样的代码:基本上,我只是制作一个可枚举的硬编码客户列表,做一个简单的get方法并在/ customers

的get路径中调用该方法
public class CustomersController : Controller
    {
        // GET: Customers
        public ActionResult Index()
        {
            var customers = GetCustomers();

            return View(customers);
        }

        public IEnumerable<Customer> GetCustomers()
        {
            return new List<Customer>
            {
                new Customer
                {
                    Id = 1,
                    Name = "Peter Parker"
                },

                new Customer
                {
                    Id = 2,
                    Name = "Eddie Brock"
                },

                new Customer
                {
                    Id = 3,
                    Name = "Mary Jane"
                },
            };
        }
    }
}

在我的Razor视图中,我引入模型并尝试遍历客户并将其打印在列表中。不知道我做错了什么因为知识分子不会带来什么。我不能像li中的@ customer.Name那样说。如果我将鼠标悬停在@foreach块中的Model.Customer上,它表示没有客户的定义。

@model Vidly.Models.Customer

@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<ul>
    @foreach(var customer in Model.Customers)
    {
        <li>@customer</li>
    }
</ul>

1 个答案:

答案 0 :(得分:3)

GetCustomers()方法返回{strong>集合的Customer个对象,并且您将该集合传递给视图。因此,您的视图应该强烈地键入集合Customer对象。您当前的代码表示它需要一个Customer对象。

将其更改为强类型为Customer个对象的集合,然后在视图中,您可以循环Model,这是一个集合(您可以遍历集合)。

@model List<Vidly.Models.Customer>    
@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<ul>
    @foreach(var customer in Model)
    {
        <li>@customer.Id</li>
        <li>@customer.Name</li>
    }
</ul>