C# MVC 4 app one重定向出现HTTP错误404.0-未找到

C# MVC 4 app one重定向出现HTTP错误404.0-未找到,c#,asp.net-mvc-4,C#,Asp.net Mvc 4,我有一个具有以下文件夹结构的MVC 4应用程序: Controllers >Table10Controller.cs Views >Billing >>PercentageInstallmentTable.cshtml >Table10 >>Create.cshtml >>Edit.cshtml >>Details.cshtml >>Delete.cshtml Percentage

我有一个具有以下文件夹结构的MVC 4应用程序:

Controllers
 >Table10Controller.cs
Views
 >Billing
   >>PercentageInstallmentTable.cshtml
 >Table10
   >>Create.cshtml
   >>Edit.cshtml
   >>Details.cshtml
   >>Delete.cshtml
PercentageInstallmentTable.cshtml包含以下操作链接

@Html.ActionLink("Create New", "..\\Table10\\Create")
@Html.ActionLink("Edit", "..\\Table10\\Edit", new { id = item.PID }) 
@Html.ActionLink("Details", "..\\Table10\\Details", new { id = item.PID }) 
@Html.ActionLink("Delete", "..\\Table10\\Delete", new { id = item.PID })
正确编辑、详细信息和删除所有重定向。出于某种原因,我得到了

HTTP错误404.0-未找到。您正在查找的资源已被删除、名称已更改或暂时不可用

即使文件存在并且与edit/details/delete位于同一文件夹中

我昨天注意到了这个问题,从Table10文件夹中删除Create.cshtml,然后将其放回该文件夹,解决了这个问题。今天这个解决方案不起作用了,我就是无法让它发挥作用。发生了什么事

我将actionlink更改为

 @Html.ActionLink("Create New", "Create", "Table10")
这将显示路径localhost:51269/Table10/Create,这是正确的,当我将10换成其他数量的表时,我已经完成了这些工作(即localhost:51269/Table8/Create)。不幸的是,对于表10,我在Create上仍然得到相同的404

如果这有帮助,这里是Table10Controller.cs

  using System;
  using System.Collections.Generic;
  using System.Data;
  using System.Data.Entity;
  using System.Linq;
  using System.Web;
  using System.Web.Mvc;
  using BillingApp.Models;

namespace BillingApp.Controllers
{
public class Table10Controller : Controller
{
    private BillingUIEntities db = new BillingUIEntities();

    //
    // GET: /Table10/

    public ActionResult Index()
    {
        return View(db.PERCENTAGE_INSTALLMENT_TABLE.ToList());
    }

    //
    // GET: /Table10/Details/5

    public ActionResult Details(int id = 0)
    {
        PERCENTAGE_INSTALLMENT_TABLE percentage_installment_table = db.PERCENTAGE_INSTALLMENT_TABLE.Find(id);
        if (percentage_installment_table == null)
        {
            return HttpNotFound();
        }
        return View(percentage_installment_table);
    }

    public ActionResult View(int id = 0)
    {
        PERCENTAGE_INSTALLMENT_TABLE percentage_installment_table = db.PERCENTAGE_INSTALLMENT_TABLE.Find(id);
        if (percentage_installment_table == null)
        {
            return HttpNotFound();
        }
        return View(percentage_installment_table);
    }

    //
    // GET: /Table10/Create

    public ActionResult Create()
    {
        return View();
    }

    //
    // POST: /Table10/Create

    [HttpPost]
    public ActionResult Create(PERCENTAGE_INSTALLMENT_TABLE percentage_installment_table)
    {
        if (ModelState.IsValid)
        {
            db.PERCENTAGE_INSTALLMENT_TABLE.Add(percentage_installment_table);
            db.SaveChanges();
            return RedirectToAction("../Billing/PercentageInstallmentTable");
        }

        return View(percentage_installment_table);
    }

    //
    // GET: /Table10/Edit/5

    public ActionResult Edit(int id = 0)
    {
        PERCENTAGE_INSTALLMENT_TABLE percentage_installment_table = db.PERCENTAGE_INSTALLMENT_TABLE.Find(id);
        if (percentage_installment_table == null)
        {
            return HttpNotFound();
        }
        return View(percentage_installment_table);
    }

    //
    // POST: /Table10/Edit/5

    [HttpPost]
    public ActionResult Edit(PERCENTAGE_INSTALLMENT_TABLE percentage_installment_table)
    {
        if (ModelState.IsValid)
        {
            db.Entry(percentage_installment_table).State = EntityState.Modified;
            db.SaveChanges();
            return RedirectToAction("../Billing/PercentageInstallmentTable");
        }
        return View(percentage_installment_table);
    }

    //
    // GET: /Table10/Delete/5

    public ActionResult Delete(int id = 0)
    {
        PERCENTAGE_INSTALLMENT_TABLE percentage_installment_table = db.PERCENTAGE_INSTALLMENT_TABLE.Find(id);
        if (percentage_installment_table == null)
        {
            return HttpNotFound();
        }
        return View(percentage_installment_table);
    }

    //
    // POST: /Table10/Delete/5

    [HttpPost, ActionName("Delete")]
    public ActionResult DeleteConfirmed(int id)
    {
        PERCENTAGE_INSTALLMENT_TABLE percentage_installment_table = db.PERCENTAGE_INSTALLMENT_TABLE.Find(id);
        db.PERCENTAGE_INSTALLMENT_TABLE.Remove(percentage_installment_table);
        db.SaveChanges();
        return RedirectToAction("../Billing/PercentageInstallmentTable");
    }

    protected override void Dispose(bool disposing)
    {
        db.Dispose();
        base.Dispose(disposing);
    }
}
}
更新:我备份了Table10及其内容以及Table10Controller.cs。然后我将它们全部删除,创建了一个新的Table10控制器,选项为“使用实体框架,具有读/写操作和视图的MVC控制器”,因此Table10文件夹将使用新的edit/delete/details/create创建。然后我将控制器和视图的内容复制到新创建的文件中。创建仍然无法查看,但其他所有操作都正常。我只是……不明白


解决了这个问题,我需要更仔细地查看控制器-有一个actionresult视图,我不知道它为什么在那里。把它拿走,一切都好

你想做些奇怪的事。 你在打电话吗

@Html.ActionLink(string label, string actionName)
第二个参数不是操作名称,因为它指向不同的文件夹(看起来像视图的url)

要更正此问题,请执行以下操作: 在Table10控制器中添加以下操作: 创建、详细信息。。。 然后在你看来,你可以打电话

@Html.ActionLink(string label, string controllerName, string actionName) 
像这样:

@Html.ActionLink("Create", "Table10", "Create")
@Html.ActionLink("Create", "Table10", "Create", new { Id = item.PID })
或者,如果您需要添加一些参数(如您试图传递给控制器的Id)

像这样:

@Html.ActionLink("Create", "Table10", "Create")
@Html.ActionLink("Create", "Table10", "Create", new { Id = item.PID })
通过这样做,您将调用名为“Table10”的控制器上名为“Create”的操作,该控制器在视图中有一个标签“Create”

生成的HTML将是:

<a href="Table10/Create">Create</a>

您可以在哪里使用“.\x\y\z\view”

您是否使用Fiddler查看发布到服务器的内容?我所在的系统没有管理权限,因此无法安装Fiddler。好的,您是否检查了IIS日志以查看404请求?您的Table10Controller.cs看起来像什么?很好,您自己解决了这个问题。你能设置你的答案并选择正确的答案,让其他人知道答案已经解决了吗?谢谢