Я реконструировал таблицу из базы данных и вышел из нее. Затем добавил контроллер со всеми каркасами для представлений и контекста. В моей таблице нет традиционного первичного ключа, такого как «Id», у нее есть сложный ключ. Однако у меня есть столбец Id, который уникален.
Когда представления были созданы, настройка была правильной. Я заметил, что в поле «Редактировать, Детали и Удалить» ссылки на действия закомментированы. Я удалил комментарии и указал элементы модели на поле «Id».
Мое поле «Идентификатор» является ориентиром, но я не думаю, что это проблема. Когда я нажимаю ссылку редактирования в представлении, я получаю сообщение о том, что страница не найдена. Любая помощь будет принята с благодарностью.
<h2>Index</h2>
<p>
<a asp-action="Create">Create New</a>
</p>
<table class="table">
<thead>
<tr>
<th>
@Html.DisplayNameFor(model => model.Id)
</th>
<th>
@Html.DisplayNameFor(model => model.Dark)
</th>
<th>
@Html.DisplayNameFor(model => model.Lit)
</th>
<th>
@Html.DisplayNameFor(model => model.Contra)
</th>
<th>
@Html.DisplayNameFor(model => model.CreateDate)
</th>
<th>
@Html.DisplayNameFor(model => model.CreateBy)
</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Id)
</td>
<td>
@Html.DisplayFor(modelItem => item.Dark)
</td>
<td>
@Html.DisplayFor(modelItem => item.Lit)
</td>
<td>
@Html.DisplayFor(modelItem => item.Contra)
</td>
<td>
@Html.DisplayFor(modelItem => item.CreateDate)
</td>
<td>
@Html.DisplayFor(modelItem => item.CreateBy)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.Id }) |
@Html.ActionLink("Details", "Details", new { id = item.Id }) |
@Html.ActionLink("Delete", "Delete", new { id = item.Id })
</td>
</tr>
}
</tbody>
</table>
Вот мой контроллер
public class RoutePartnersController : Controller
{
private readonly TraderContext _context;
public RoutePartnersController(TraderContext context)
{
_context = context;
}
// GET: RoutePartners
public async Task<IActionResult> Index()
{
return View(await _context.RoutePartner.ToListAsync());
}
// GET: RoutePartners/Details/5
public async Task<IActionResult> Details(Guid? id)
{
if (id == null)
{
return NotFound();
}
var routePartner = await _context.RoutePartner
.SingleOrDefaultAsync(m => m.PartnerId == id);
if (routePartner == null)
{
return NotFound();
}
return View(routePartner);
}
// GET: RoutePartners/Create
public IActionResult Create()
{
return View();
}
// POST: RoutePartners/Create
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("Id,PartnerId,RouteCompany,RouteCode,Dark,Lit,Contra,CreateDate,CreateBy")] RoutePartner routePartner)
{
if (ModelState.IsValid)
{
routePartner.PartnerId = Guid.NewGuid();
_context.Add(routePartner);
await _context.SaveChangesAsync();
return RedirectToAction("Index");
}
return View(routePartner);
}
// GET: RoutePartners/Edit/5
public async Task<IActionResult> Edit(Guid? id)
{
if (id == null)
{
return NotFound();
}
var routePartner = await _context.RoutePartner.SingleOrDefaultAsync(m => m.PartnerId == id);
if (routePartner == null)
{
return NotFound();
}
return View(routePartner);
}
// POST: RoutePartners/Edit/5
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Edit(Guid id, [Bind("Id,PartnerId,RouteCompany,RouteCode,Dark,Lit,Contra,CreateDate,CreateBy")] RoutePartner routePartner)
{
if (id != routePartner.PartnerId)
{
return NotFound();
}
if (ModelState.IsValid)
{
try
{
_context.Update(routePartner);
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!RoutePartnerExists(routePartner.PartnerId))
{
return NotFound();
}
else
{
throw;
}
}
return RedirectToAction("Index");
}
return View(routePartner);
}
// GET: RoutePartners/Delete/5
public async Task<IActionResult> Delete(Guid? id)
{
if (id == null)
{
return NotFound();
}
var routePartner = await _context.RoutePartner
.SingleOrDefaultAsync(m => m.PartnerId == id);
if (routePartner == null)
{
return NotFound();
}
return View(routePartner);
}
// POST: RoutePartners/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public async Task<IActionResult> DeleteConfirmed(Guid id)
{
var routePartner = await _context.RoutePartner.SingleOrDefaultAsync(m => m.PartnerId == id);
_context.RoutePartner.Remove(routePartner);
await _context.SaveChangesAsync();
return RedirectToAction("Index");
}
private bool RoutePartnerExists(Guid id)
{
return _context.RoutePartner.Any(e => e.PartnerId == id);
}
}