来自Controller的“删除”链接不会转到“删除”页面

时间:2013-12-13 17:06:45

标签: linq webforms repository asp.net-mvc-routing

这是家庭作业,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();
            }

1 个答案:

答案 0 :(得分:0)

控制器中的第一个Delete函数,用于将您重定向到页面的“索引”操作,而不是重定向到专用的“删除”视图。它与POST Delete方法完全相同,减去try-catch块。您应该将其更改为指向删除视图名称。

MVC页面上的URL指向单击该链接时将运行的操作。它正在运行正确的操作(您的Delete调用),但随后会看到它应该转到Controller上的Index操作(然后不会转到您的删除页面)。您所看到的内容是正确的:它会转到Delete,但Delete会重定向到索引。