【发布时间】:2021-02-24 01:15:53
【问题描述】:
我是 Asp.net 核心的新手,在尝试解决这个问题时遇到了一些麻烦:
我有 2 个控制器:一个“课程”控制器和一个“教授”控制器。
当用户看到 Professor 模型中列出的条目并点击 details 时,它(像往常一样)调用“Professor”控制器中称为“details”的动作。
详细信息操作在调用时会显示教授教授的所有课程。 显示这些课程后,用户可以点击课程。
这就是我卡住的地方:一旦用户点击课程,我需要调用“课程”控制器中的一个函数来显示用户点击的课程的名称(以及其他相关信息到课程 - 例如课程的部门)。我很难弄清楚如何“保存”用户点击的这门课程的名称,因为他们只是点击了一个按钮。我该怎么做?
这里有一些代码可以让您了解这一切:(忽略我的查询字符串 - 它们的格式很差,需要在存储过程中)
Professor Controller 中的详细信息操作:
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);
}
显示教授教授的所有课程的“详细信息”视图:
<h1>
@foreach (var course in Model)
{
<a asp-controller="Course" asp-action="Index"> @course.SubjectName </a>
<br />
}
</h1>
我的“课程”控制器中的索引操作(我需要根据用户之前点击的特定课程找出一种显示相关信息的方法)
public async Task<IActionResult> Index()
{
var ID = TempData["ID"];
Console.WriteLine(ID);
string connectionString = " ";
string queryString = "SELECT * FROM CourseModel WHERE CourseID=@id";
var model = new List<CourseModel>();
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand(queryString, connection);
command.Parameters.AddWithValue("id", ID);
connection.Open();
SqlDataReader rdr = command.ExecuteReader();
while (rdr.Read())
{
var course = new CourseModel();
course.SubjectName = rdr["SubjectName"].ToString();
model.Add(course);
}
}
return View(model);
}
有什么想法吗?我觉得我过于复杂了,希望能得到一些建议!
【问题讨论】:
标签: c# asp.net-mvc asp.net-core model-view-controller asp.net-core-mvc