Я осмотрел и увидел, что у многих людей была эта проблема. Однако моя не совсем то же самое. В то время как другие проблемы обычно решаются с использованием правильных перегрузок метода ActionLink и фиксируются, убедившись, что тип возвращаемого объекта в методе верен, это не так.Объект, полученный в методе ActionLink всегда null
В этом примере кода переменные все установлены правильно в соответствии со всеми другими источниками, однако объект пользователя, полученный в методе, всегда равен нулю.
Что я сделал:
- Проверено, если объект поместить на ActionLink есть данные (это делает)
- Проверено, если тип объекта я получил правильно, вместе с тем, я отправить
- Пробовал с помощью Ajax ActionLink и метод HttpPost вместо
Вот код первого из внутреннего интерфейса, а затем FRONTEND
public void DeleteUser(User user)
{
using (EFEntity context = new EFEntity())
{
context.User.Attach(user);
context.User.Remove(user);
context.SaveChanges();
Response.Redirect("~/Home/someView");
}
}
Действие Ссылка Передняя часть:
foreach (User user in Model.userList)
{
<tr>
<td>
@{
number = number + 1;
}
@number
</td>
<td>@user.Gid</td>
<td>@user.Name</td>
<td>@user.Email</td>
<td>@user.Permissions.Perm</td>
<td>@user.LastUpdated</td>
<td>
@Html.ActionLink("Delete", "DeleteUser", "Service", user, new { @class = "btn btn-danger" })
</td>
</tr>
}
Вы не должны быть проходящими комплексом в 'ActionLink()'. Если объекты имеют множество свойств, вы можете легко превысить строку запроса и выбросить исключение (и там создается уродливая строка запроса). Вам просто нужно передать свойство «ID» пользователя. –
И вы даже не должны использовать ссылку на действие - ваши модифицирующие данные, поэтому она должна быть POST - в настоящее время она добавляет историю браузеров пользователей и может быть легко перенесена на другую. В лучшем случае это будет означать, что ненужные вызовы базы данных будут удалять то, что в настоящее время не существует, и в худшем случае может вызвать исключение. Настоятельно рекомендую вам следовать обычной практике. –
@StephenMuecke Пожалуйста, подробно расскажите о репозитории и истории браузера, неясно, что вы имеете в виду. Когда вы нажмете эту кнопку, она обновит страницу, поэтому у вас нет возможности дважды удалить одну и ту же вещь. Или я неправильно понял, что вы имеете в виду? – Snoozles