Недавно было потрачено некоторое время в сторону от MVC и вернуться к старому проекту, пытаясь переписать код, который я делал ранее, но притормозил, удалив элемент из списка, с EF отлично, но я стараюсь не использовать Entity Framework для управления моими данными модели. Я хочу использовать мою модель в качестве базы данных, пока я не с удовольствием подчинюсь.Удалить проблему с помощью MVC 5 Список
Я вновь написал вопрос, чтобы упростить его и не сбрасывать грузы кода, при нажатии кнопки удаления я получаю ошибку ниже:
Словарь параметров содержит пустую запись для параметра «идентификатор» непустого типа «System.Int32» для метода «System.Web.Mvc.ActionResult RemoveRequested (Int32)» в «Project.Views.requestedController». Необязательный параметр должен быть ссылочным типом, нулевым типом или объявлен как необязательный параметр. Имя параметров: параметры
Я думаю, что идентификатор обычно обрабатывается EF, но я думал, что [key]
будет обрабатывать это автоприращение - это возможность сортировки?
Надеюсь, что это имеет смысл. Динамический я действительно не забочусь, поэтому в идеале нет jQuery/java-скрипта, если только не нужно.
Код:
Частичный вид
@model IEnumerable<Project.Models.Allocation>
@using (Html.BeginForm())
{
if (Model != null)
{
foreach (var ri in Model)
{
<div class="ui-grid-c ui-responsive">
<div class="ui-block-a">
<span>
@ri.one
</span>
</div>
<div class="ui-block-b">
<span>
@ri.two
</span>
</div>
<div class="ui-block-c">
<span>
@ri.three
</span>
</div>
<div class="ui-block-d">
<span>
@Html.ActionLink("Delete", "RemoveRequested", new { id = ri.id })
</span>
</div>
</div>
}
}
Модели
public class Allocation
{
[Key]
public int? id { get; set; }
[Required]
public string one { get; set; }
[Required]
public string two { get; set; }
[Required]
public string three { get; set; }
}
public class Container
{
[key]
public int? id { get;set; }
[Required]
public List<Allocation> requested { get;set; }
}
контроллер Действие Метод
public ActionResult RemoveRequested(int id)
{
var newContainer = (Container)Session["containerSession"];
if(newAllocation.requested != null)
{
var del = newContainer.requested.Find(m => m.id == id);
newContainer.requested.Remove(del);
}
Session["containerSession"] = newContainer;
return RedirectToAction("Index");
}
ОК - спасибо, сделал несколько изменений, теперь получив «Запрошенный URL:/Container/RemoveRequested/0' - поэтому идентификатор не назначается, как бы лучше всего это сделать? – PurpleSmurph
Добавьте это на свой ключ '[DatabaseGenerated (DatabaseGeneratedOption.Identity)]'. :) – hutchonoid
Это требует EF? Что это значит? Я хочу избежать EF, поэтому просто использую модель как временную db перед отправкой фактического db. – PurpleSmurph