如何解决Asp.net Core MVC-数据检索问题
我是Asp.net核心的新手,在尝试思考这个问题时遇到了一些麻烦:
我有2个控制器:“课程”控制器和“教授”控制器。
当用户看到Professor模型中列出的条目并点击详细信息时,它(通常)会在“ Professor”控制器中调用动作,称为“ details”。
Details操作被调用时,显示教授教授的所有课程。 显示这些课程后,用户可以单击课程。
这就是我要坚持的地方:用户单击课程后,我需要在“课程”控制器中调用一个函数以显示用户单击的课程的名称(以及其他相关信息)。课程-例如课程的部门)。我很难弄清楚如何“保存”用户单击的课程名称,因为他们只是单击按钮。我该怎么做呢?
下面是一些代码,可以将它们全都放在透视图中:(忽略我的查询字符串-格式不正确,需要存储在存储过程中)
我的教授控制器中的详细操作:
Hudson.instance.items.each { job ->
def triggers = job.getTriggers()
triggers.each { trigger ->
println "trigger is: ${trigger}"
}
}
“详细信息”视图显示教授教授的所有课程:
public IActionResult Details(int? id)
{
TempData["ID"] = id;
string connectionString = " ";
if (id == null)
{
return NotFound();
}
string queryString = "SELECT ProfessorModel.FirstName,CourseModel.CourseName FROM ProfessorModel LEFT OUTER JOIN CourseAssignment ON ProfessorModel.ProfessorID = CourseAssignment.ProfessorID LEFT OUTER JOIN CourseModel ON CourseModel.CourseID = CourseAssignment.CourseID WHERE ProfessorModel.ProfessorID=@profID";
var courseModel = new List<CourseModel>();
using (sqlConnection connection = new sqlConnection(connectionString))
{
sqlCommand command = new sqlCommand(queryString,connection);
command.Parameters.AddWithValue("profID",id);
connection.open();
sqlDataReader rdr = command.ExecuteReader();
while (rdr.Read())
{
var course = new CourseModel();
course.SubjectName = rdr["CourseName"].ToString();
courseModel.Add(course);
}
}
// var professorModel = await _context.ProfessorModel
// .FirstOrDefaultAsync(m => m.ProfessorID == id);
if (courseModel == null)
{
return NotFound();
}
return View(courseModel);
}
我的“ Course”控制器中的索引动作(我需要找出一种方法来根据用户先前单击的特定类来显示相关信息)
<h1>
@foreach (var course in Model)
{
<a asp-controller="Course" asp-action="Index"> @course.SubjectName </a>
<br />
}
</h1>
有什么想法吗?我觉得我太复杂了,不胜感激一些建议!
解决方法
您需要做的就是在<a>
标签中添加链接到课程所需的信息。假设您的课程具有作为其主键的Id属性,那么您将执行以下操作。
@foreach (var course in Model)
{
<a asp-controller="Course" asp-action="Details" asp-route-id="@course.Id"> @course.SubjectName </a>
}
然后让Details方法(或者您可以将页面和方法命名为所需的任何名称)接受该参数id
。
public async Task<IActionResult> Details(int id) { ... }
您可以使用asp-route-{parameterName}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。