Изменить URL не содержит идентификатор
Я учусь MVC из
https://www.youtube.com/watch?v=ItSA19x4RU0&list=PL6n9fhu94yhVm6S8I2xd6nYz2ZORd7X2v
Я делаю Основную операцию редактирования. На странице "Индекс" отображаются следующие данные.
Emp_id Emp_name Emp_Sal
1 name1 sal1 Edit | Details | Delete
... Когда я нажимаю на Edit..URL Display Like
"http://localhost/MvcApplication1/Employee/Edit"`
... Но согласно Tutorial это должно быть похоже на
http://localhost/MvcApplication1/Employee/Edit/01
Карта маршрута
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
Я не создавал Edit ActionMethod до сих пор.
Код представления индекса:
@model IEnumerable<BusinessLayer.Employee>
@{
ViewBag.Title = "Index";
}
<h2>
Index</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table>
<tr>
<th>
@Html.DisplayNameFor(model => model.Emp_id)
</th>
<th>
@Html.DisplayNameFor(model => model.Emp_name)
</th>
<th>
@Html.DisplayNameFor(model => model.Emp_Sal)
</th>
<th>
</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Emp_id)
</td>
<td>
@Html.DisplayFor(modelItem => item.Emp_name)
</td>
<td>
@Html.DisplayFor(modelItem => item.Emp_Sal)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) |
@Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) |
@Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })
</td>
</tr>
}
</table>
Пожалуйста, подскажите, если я что-то упустил
2 ответа
Ваш ActionLink
вызовы не передают правильные значения маршрута. Действия Edit, Details и Delete ожидают id
параметр для передачи в качестве значения маршрута. Вы можете сделать это следующим образом, предполагая Emp_id
это значение идентификатора, который вы хотите использовать:
@Html.ActionLink("Edit", "Edit", new { id=item.Emp_id }) |
@Html.ActionLink("Details", "Details", new { id=item.Emp_id }) |
@Html.ActionLink("Delete", "Delete", new { id=item.Emp_id })
В вашем примере вы прокомментировали эти значения, чтобы они не передавались как значения маршрута, и, следовательно, правильный маршрут не будет создан.
Правильно.
@Html.ActionLink("Edit", "Edit", new { id=item.Emp_id }) |
@Html.ActionLink("Details", "Details", new { id=item.Emp_id }) |
@Html.ActionLink("Delete", "Delete", new { id=item.Emp_id })
Меня устраивает. Просто удалите комментарий и добавьте код