这是家庭作业,ASP.NET MVC和Web表单Web应用程序使用存储库(没有数据库的硬编码数据)来评估医生。用户应该能够编辑和删除条目,但Controller上的“删除”链接不会转到“删除”页面。但是,当我将鼠标悬停在“删除”链接上时,URI为:DoctorApplication / Delete?DoctorPicture = Images / 0.cropped.jpg。我在整个应用程序中使用字符串DoctorPicture而不是int ID,而我想的是没有Images目录的路径Images / 0.cropped而不是0.cropped是我的删除视图没有显示的原因,但在我的TestDoctorRepository中,我有DoctorPicture =“Images / 0cropped.jpg”,以便图像可以显示在页面上。为什么不显示“删除”视图?
public TestDoctorRepository()
{
doctors = new List<Doctor> {
new Doctor { DoctorPicture = "Images/0cropped.jpg", DoctorName = "Michael Shores", DoctorSpecialty = "Opthamology", times = 0, rating = 0, rated = true, avg=0, fave = true },
// more code
};
}
public void Remove(string DoctorPicture)
{
var doctor = from d in doctors where d.DoctorPicture == DoctorPicture select d;
doctors.Remove(doctor.FirstOrDefault());
}
来自DoctorApplicationController:
public ActionResult Delete(string DoctorPicture)
{
repo.Remove(DoctorPicture);
return RedirectToAction("Index");
}
//private ActionResult View(Func<List<Doctor>> func)
//{
// throw new NotImplementedException();
//}
//
// POST: /DoctorApplication/Delete/5
[HttpPost]
public ActionResult Delete(string DoctorPicture, FormCollection collection)
{
try
{
// TODO: Add delete logic here
repo.Remove(DoctorPicture);
return RedirectToAction("Index");
}
catch
{
return View();
}
答案 0 :(得分:0)
控制器中的第一个Delete
函数,用于将您重定向到页面的“索引”操作,而不是重定向到专用的“删除”视图。它与POST Delete
方法完全相同,减去try-catch块。您应该将其更改为指向删除视图名称。
MVC页面上的URL指向单击该链接时将运行的操作。它正在运行正确的操作(您的Delete
调用),但随后会看到它应该转到Controller上的Index操作(然后不会转到您的删除页面)。您所看到的内容是正确的:它会转到Delete
,但Delete
会重定向到索引。