[英]MVC3 Binding model (some fields) to the view
將模型綁定到視圖。
我的模特人有{Id,Title,Address ... etc)
在我的控制器中,我想檢索一些字段,例如:
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提供正確的語法。 謝謝
如果你的觀點是需要模型是Enumerable
那么它需要AsEnumerable
在你的SELECT語句。
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,因此建議以下內容。
視圖模型
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
。
如果您打算只選擇一個Person並顯示,則使用SingleOrDefault()
, First()
, FirstOrDefault()
僅獲得一個Person輸入。
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; }
}
然后select new PersonViewModel {Name = p.Name, Title = p.Title }
,當然@model IEnumerable<PersonViewModel>
在視圖中使用該模型: @model IEnumerable<PersonViewModel>
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.