【发布时间】:2016-07-01 17:14:54
【问题描述】:
我正在开发一个基于流行的 ContosoUniveristy 教程的简单项目。我想扩展本教程中的一些功能。
我创建了一个名为 School 的表,我在其中保存了每所学校的属性,例如地址、电话号码、课程、学生等。后来我在学生、课程和其他几个表中添加了一个名为 SchoolID 的 foreignKey 属性。
我有一个带有基本布局视图的 SchoolIndex 页面,其中列出了所有学校,用户可以单击一个进入详细信息页面。此详细信息页面有一个 _DitLayout 布局,左侧有附加菜单,您可以在其中找到指向适当信息的链接,例如联系人、课程、学生(例如存储在 School 表中的那些)。 _DitLayout 由所有联系人、课程和学生视图共享。
这里我有一个问题。当我在 SchoolIndex 页面上单击学校时,我希望左侧菜单中的链接指向这个特定的学校属性。为此,我必须以某种方式将 SchoolID 传递给布局页面(不是一个好主意?)。另一种方法是在运行槽视图、控制器和操作时以某种方式存储 SchoolID。这样我就可以在控制器中编写
public class SchoolController : Controller
{
private SchoolContext db = new SchoolContext();
public ActionResult Contact()
{
int ID = //here I pass SchoolID;
// I fetch school from the database
SchoolModel school = db.School.Find(ID);
//and I map the properties to the ViewModel
ContactViewModel contact = new ContactViewModel();
contact.Address = school.Address;
contact.Phone = school.Phone;
//etc.
return View(contact);
}
}
问题是:如何在控制器之间传递或存储 SchoolID?是的,我不仅需要在动作之间传递 ID,还需要在控制器之间传递 ID。
我想也许我可以将这个 ID 存储在 cookie 中。这是个好主意吗?有更好的方法吗?
【问题讨论】:
标签: asp.net asp.net-mvc asp.net-mvc-5