我有一个具有以下文件夹结构的MVC 4应用程序:
Controllers
>Table10Controller.cs
Views
>Billing
>>PercentageInstallmentTable.cshtml
>Table10
>>Create.cshtml
>>Edit.cshtml
>>Details.cshtml
>>Delete.cshtml
PercentageInstallmentTable.cshtml包含以下actionlinks
@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这是正确的,当我换掉其他数量的表时,我已经完成了(即; 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。然后我将它们全部删除,创建了一个新的Table 10控制器,带有选项" MVC控制器,带有读/写操作和视图,使用Entity Framework",因此Table10文件夹将使用新编辑/删除/详细信息/创建创建。然后我复制了控制器的内容并查看了新创建的文件。创建仍然无法查看,但所有其他人都可以。我只是......不明白这一点。
解决了问题,我需要更仔细地看一下控制器 - 有一个actionresult View我不知道为什么它在那里。删除它,一切都很好。
答案 0 :(得分:0)
你正在尝试做一些奇怪的事情。 你在打电话
@Html.ActionLink(string label, string actionName)
您的第二个参数不是动作名称,因为它指向不同的文件夹(看起来像是视图的网址)
要纠正此问题: 在Table10Controller中添加以下操作: 创建,细节...... 然后在你看来,你可以打电话
@Html.ActionLink(string label, string controllerName, string actionName)
像这样:
@Html.ActionLink("Create", "Table10", "Create")
或者如果您需要添加一些参数(例如您尝试传递给控制器的ID)
@Html.ActionLink(string label, string controllerName, string actionName, object routeValue)
像这样:
@Html.ActionLink("Create", "Table10", "Create", new { Id = item.PID })
通过执行此操作,您将在名为“Table10”的控制器上调用名为“Create”的操作,并在视图中使用标签“Create”。
生成的HTML将是:
<a href="Table10/Create">Create</a>
如果您尝试在当前视图中呈现视图,则应使用
@Html.RenderPartial(string viewName)
您可以使用“.. \ x \ y \ z \ view”。