ASP.Net 按钮未链接到各自的 Views/Pages(选择时发出本地主机错误)
ASP.Net Buttons not linking to respective Views/Pages (local host error issued when selected)
我刚开始学习 ASP.Net,目前正在开发一个多页网络应用程序。我的主页视图看起来不错,但是当我尝试打开 "Add contact" 视图或 "Edit" 或 "Delete" 视图时,我收到一条错误消息,指出找不到本地主机页面。我无法确定我的问题所在 - 这是我的索引文件中的一些代码和我的控制器文件中的一些代码。如果我应该寻找其他地方,请告诉我。
与这些视图相关的索引文件代码:
<td>
<a asp-controller="ContactInfo" asp-action="Edit" asp-route-id="@contact.ContactId" aps-
route-slug="contact.Slug">Edit</a>
<a asp-controller="ContactInfo" asp-action="Delete" asp-route-id="@contact.ContactId"
aps-route-slug="contact.Slug">Delete</a>
</td>
</tr>
家庭控制器代码:
public class HomeController : Controller
{
private ContactContext context { get; set; }
public HomeController(ContactContext ctx)
{
context = ctx;
}
public IActionResult Index()
{
var contacts = context.Contacts.OrderBy(m => m.Name).ToList();
return View(contacts);
}
}
联系人列表控制器代码:
public class ContactListController : Controller
{
private ContactContext context { get; set; }
public ContactListController(ContactContext ctx)
{
context = ctx;
}
[HttpGet]
public IActionResult Add()
{
ViewBag.Action = "Add";
return View("Edit", new ContactInfo());
}
[HttpGet]
public IActionResult Edit(int id)
{
ViewBag.Action = "Edit";
var contact = context.Contacts.Find(id);
return View(contact);
}
[HttpPost]
public IActionResult Edit(ContactInfo contact)
{
if (ModelState.IsValid)
{
if (contact.ContactId == 0)
context.Contacts.Add(contact);
else
context.Contacts.Update(contact);
context.SaveChanges();
return RedirectToAction("Index", "Home");
}
else
{
ViewBag.Action = (contact.ContactId == 0) ? "Add" : "Edit";
return View(contact);
}
}
[HttpGet]
public IActionResult Delete(int id)
{
var contact = context.Contacts.Find(id);
return View(contact);
}
[HttpPost]
public IActionResult Delete(ContactInfo contact)
{
context.Contacts.Remove(contact);
context.SaveChanges();
return RedirectToAction("Index", "Home");
}
}
如我所见,您的控制器名称是 ContactList,但您在此处插入了其他内容 asp-controller="ContactInfo",而且我认为不需要 route-slug="contact.Slug" .
我刚开始学习 ASP.Net,目前正在开发一个多页网络应用程序。我的主页视图看起来不错,但是当我尝试打开 "Add contact" 视图或 "Edit" 或 "Delete" 视图时,我收到一条错误消息,指出找不到本地主机页面。我无法确定我的问题所在 - 这是我的索引文件中的一些代码和我的控制器文件中的一些代码。如果我应该寻找其他地方,请告诉我。
与这些视图相关的索引文件代码:
<td>
<a asp-controller="ContactInfo" asp-action="Edit" asp-route-id="@contact.ContactId" aps-
route-slug="contact.Slug">Edit</a>
<a asp-controller="ContactInfo" asp-action="Delete" asp-route-id="@contact.ContactId"
aps-route-slug="contact.Slug">Delete</a>
</td>
</tr>
家庭控制器代码:
public class HomeController : Controller
{
private ContactContext context { get; set; }
public HomeController(ContactContext ctx)
{
context = ctx;
}
public IActionResult Index()
{
var contacts = context.Contacts.OrderBy(m => m.Name).ToList();
return View(contacts);
}
}
联系人列表控制器代码:
public class ContactListController : Controller
{
private ContactContext context { get; set; }
public ContactListController(ContactContext ctx)
{
context = ctx;
}
[HttpGet]
public IActionResult Add()
{
ViewBag.Action = "Add";
return View("Edit", new ContactInfo());
}
[HttpGet]
public IActionResult Edit(int id)
{
ViewBag.Action = "Edit";
var contact = context.Contacts.Find(id);
return View(contact);
}
[HttpPost]
public IActionResult Edit(ContactInfo contact)
{
if (ModelState.IsValid)
{
if (contact.ContactId == 0)
context.Contacts.Add(contact);
else
context.Contacts.Update(contact);
context.SaveChanges();
return RedirectToAction("Index", "Home");
}
else
{
ViewBag.Action = (contact.ContactId == 0) ? "Add" : "Edit";
return View(contact);
}
}
[HttpGet]
public IActionResult Delete(int id)
{
var contact = context.Contacts.Find(id);
return View(contact);
}
[HttpPost]
public IActionResult Delete(ContactInfo contact)
{
context.Contacts.Remove(contact);
context.SaveChanges();
return RedirectToAction("Index", "Home");
}
}
如我所见,您的控制器名称是 ContactList,但您在此处插入了其他内容 asp-controller="ContactInfo",而且我认为不需要 route-slug="contact.Slug" .