MVC3将模型(某些字段)绑定到视图
本文关键字:绑定 视图 字段 模型 MVC3 | 更新日期: 2023-09-27 18:22:23
将模型绑定到视图。
我的模范人物有(身份证、头衔、地址等)
在我的控制器中,我想检索一些字段例如:
var model = from p in db.Person where p.jobtype == 1
select new Person { Title = p.Title, Address = p.Address};
return View(model);
也尝试使用匿名类型,但不起作用:
var model = from p in db.Person where p.jobtype == 1
select new { p.Title, p.Address};
return View(model);
在我看来:
@model IEnumerable<Demo.Models.Person>
@foreach (var item in Model) {
<div>@item.Title</div>} >FAILS
如果我检索完整的对象,那么它就工作了,我如何使用匿名类型或''并使用我的模型检索一些字段。。。。plz提供了正确的语法。感谢
如果您的View要求Model为Enumerable
,那么在select语句中它需要为AsEnumerable
。
var model = (from p in db.Person
where p.jobtype == 1
select p).AsEnumerable();
return View(model);
然后
@model IEnumerable<Demo.Models.Person>
@foreach (var item in Model.ToList()) {
<div>@item.Title</div>}
或者,由于你只需要在一天结束时列出一个列表,并且你"应该"使用ViewModel,我建议如下。
ViewModel
public class PersonViewModel
{
public int Name { get; set; }
public string Title { get; set; }
}
控制器
var person = (from p in db.Person
where p.jobtype == 1
select p);
PersonViewModel model = Mapper.Map<Person, PersonViewModel>(person);
return View(model.ToList());
查看
@model List<Demo.ViewModels.PersonViewModel>
@foreach (var item in Model) {
<div>@item.Title</div>}
注意:我在上面的例子中使用了AutoMapper
我面前没有IDE,所以我不确定这是否完美
您可以使用.ToList():
List<person> model = (from p in db.Person
where p.jobtype == 1
select p).ToList();
return View(model);
在您看来:
@model List<person>
@foreach (var item in Model) {
}
我建议您将数据称为db.People
或类似的东西。
您应该使用p.ID == 3
而不是p.ID = 3
。
如果您打算只选择一个人并显示,则使用SingleOrDefault()
、First()
、FirstOrDefault()
只获取一个个人条目。
var model = (from p in db.Person where p.ID == 3
select p.Title).First();
然后在你的模型中不要使用IEnumerable,只使用:
@model Demo.Models.Person
<div>@item.Title</div>
编辑:在您将问题更新为包含p.jobtype而不是p.ID以选择多个之后,我建议您对要选择的数据使用特定的ViewModel。如果你想要的只是标题,那么你可以使用
@model IEnumerable<string>
@foreach (var title in Model) {
<div>@title</div>}
但我建议使用一个特定的ViewModel,只包含您需要的字段,例如:
public class PersonViewModel
{
public int Name { get; set; }
public string Title { get; set; }
}
然后CCD_ 9并且当然在视图中使用该模型:CCD_ 10。