Я работаю в веб-магазине ASP.NET, но я застрял на определенной части. Я пытаюсь создать сеанс всякий раз, когда пользователь (не входит в систему) добавляет компакт-диск или DVD-диск в свою корзину покупок. Таким образом, они могут пойти в свою корзину (/ shopping_cart) и посмотреть все продукты, которые они добавили.MVC добавление элементов в сеансы и отображение в поле зрения
Однако я не могу заставить его работать. Всякий раз, когда я нажимаю «добавить продукт», ничего не происходит.
Вот мой код:
ProductsController:
// POST: Producten/Details/9
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult AddToCart(int id)
{
Product p = db.Producten.Find(id);
if (p != null)
{
Models.Winkelkar kar;
if(Session["kar"] == null)
{
kar = new Models.Winkelkar();
}else
{
kar = (Models.Winkelkar)Session["winkelkar"];
}
kar.AddProduct(p);
Session["winkelkar"] = kar;
//var products = Session["kar"] as List<Product>;
}
return View();
}
Мои Models.Winkelkar выглядит следующим образом:
public partial class Winkelkar
{
private List<Product> _List = new List<Product>();
public List<Product> GetList()
{
// geeft een lijst van pbjecten terug
return _List;
}
public void AddProduct(Product p)
{
_List.Add(p);
}
}
И мой взгляд форма выглядит следующим образом:
<form action="" method="post>
@Html.AntiForgeryToken()
<input type="hidden" name="id" value="@Model.ID" />
<input type="submit" name="toevoegen" value="Toevoegen" />
</form>
Теперь я пытаюсь отобразить сессию на той же странице, я перееду его/shopping_cart, как только я знаю, что это работает, но я пытаюсь отобразить это следующим образом:
@Session["winkelkar"]
Я рассмотрел многие другие решения здесь, но ничего действительно не работает.
EDIT
Как указано ниже, у меня не было действия в моей форме. Я сменил его на:
<form action="@Url.Action("AddToCart", "Producten")" method="POST">
...
</form>
На шаг ближе.
В вашей форме нет действия. У вас есть HTTP. Поместите свои данные в метод действий. Я предлагаю вам начать изучать некоторые базовые учебные пособия ASP.NET MVC, пока у вас не будет оснований. И почему вы отметили это как PHP? – mason