如何在MVC视图中显示列表?

好吧,所以我看到了很多类似的问题,但不幸的是,我无法弄清楚如何在视图中访问数据库中的用户列表。我得到一个System.NullReferenceException。你们中的一位专家能看到我做错了什么吗?如何在MVC视图中显示列表?

型号

public class MyModel 

{

[Key]

public int Id { get; set; }

[Display(Name = "Name")]

public string Name { get; set; }

public bool TriggerOnLoad { get; set; }

public string TriggerOnLoadMessage { get; set; }

public string EmployeeNumber { get; set; }

public IEnumerable<User> Users { get; set; }

public List<MyModel> GetAllUsers()

{

var queryString = "SELECT Name FROM Users";

var adapter = new SqlDataAdapter(queryString, System.Configuration.ConfigurationManager.ConnectionStrings["SQLConn"].ConnectionString);

var current = new DataSet();

adapter.Fill(current, "Name");

return (from DataRow item in current.Tables[0].Rows

select new MyModel()

{

Name = Convert.ToString(item["Name"]),

}).ToList();

}

控制器

public ActionResult GetUser() 

{

var model = new MyModel();

_db.GetAllUsers();

return View(model);

}

查看

@model ModelName.Models.MyModel 

--HTMLCode--

@foreach (var item in Model.Users) <-- Exception.

{

<tr>

<td>@Html.DisplayFor(modelItem => item.Name)</td>

</tr>

}

什么我忘了?

回答:

传这样的用户。你是不是传递用户查看

public ActionResult GetUser() 

{

var model = new MyModel();

var users = _db.GetAllUsers();

return View(users);

}

然后在视图

@model List<MyModel> 

@foreach (var item in Model) //foreach through the list

{

<tr>

<td>@Html.DisplayFor(model => item.Name)</td>

</tr>

}

回答:

你的问题是,你所得到的用户,但你不及格的用户认为,相反,你传递一个空的模型。

更好的方法是在视图中创建一个包含所需属性的ViewModel。

比方说,您的视图模型看起来是这样的:

视图模型:

class YourViewModel 

{

public string Name { get; set; }

public bool TriggerOnLoad { get; set; }

public IEnumerable<User> Users { get; set; }

}

创建视图模型,你需要做什么后,你需要在创建视图模型的实例你的控制器并填充数据,然后将ViewModel传递给View。在你的情况下,它会是这个样子:

操作:

public ActionResult RandomAction() 

{

YourViewModel vm = new YourViewModel()

{

Users = _db.GetAllUsers(),

Name = "Random Name",

TriggerOnLoad = true

};

return View(vm);

}

后来,如果你决定你需要,你需要在你的看法与合作一些额外的属性,你只需将它们添加到你的ViewModel并继续。

以上是 如何在MVC视图中显示列表? 的全部内容, 来源链接: utcz.com/qa/261870.html

回到顶部