我正在创建一个具有People和Notes表的简单MVC应用程序。ASP.net MVC在一个视图中显示来自两个表的结果
使用存储库方法和LINQ to SQL来访问数据。
每个人都有一个单一的笔记一天,该笔记有一个CreatedAt。注释表中的外键为PersonID。
我已经设法使得CRUD能够为Person和Note单独工作,但是我希望能够在我的视图中显示单个人一天的注释。
在我的资源库中,我创建了一个我认为应该可以工作的帮助程序,但是我不知道如何在控制器中使用它。
public IQueryable<Note> FindSinglePersonsNote(int id)
{
return from Note in db.Notes
where Note.CreatedAt > DateTime.Now.AddDays(-1)
&& Note.PersonId == id
select Note;
}
我想什么发生的是,当我点击详情链接的人,展现人的姓名和联系到此人今天的说明。
任何帮助,将不胜感激。
干杯
汤姆
更新:
我觉得我越来越近......
我一个人控制器现在看起来像这样
public ViewResult PersonNote(int personId)
{
var personNote = new PersonNoteViewModel
{
person = scrumRepository.GetPerson(personId),
note = scrumRepository.GetNote(personId)
};
return View(personNote);
}
我创造了一个新的观点所谓PersonNote
并试图访问值,像这样:
<%= Model.person.PersonName %>
<%= Model.note.Issues %>
我的回购协议是这样的:
public Note GetNote(int id)
{
return db.Notes.SingleOrDefault(d => d.PersonId == id);
}
public Person GetPerson(int id)
{
return db.Persons.SingleOrDefault(d => d.PersonId == id);
}
但我发现了一个很奇怪的错误,当我尝试查看这一页。
参数字典中包含'ScramApp.Controllers.PersonController'中方法'System.Web.Mvc.ViewResult PersonNote(Int32)'的非空类型'System.Int32'的参数'personId'的空项。可选参数必须是引用类型,可为空类型,或者声明为可选参数。 参数名:参数
此错误表示您没有在URL中指定personID,或者路由没有选取personID参数。确保你看看[NerdDinner教程](http://nerddinnerbook.s3.amazonaws.com/Intro.htm);它包含这些东西的原型代码。 – 2010-07-22 21:25:46
指定了personId,但它不喜欢我的控制器中使用的(personID)。 我把它切换到(id),事情变得更好。 它现在显示一个人名和他们的笔记(只要我每个人只有一个笔记就在我的数据库中) 非常感谢你的帮助,明天你会成为一名救生员! – 2010-07-22 21:34:22
您的欢迎,我编辑了我的回答,以更好地跟踪id。* FYI:* id的工作原理是因为它在您的*默认*路线中 – 2010-07-22 21:38:09