C# 如何在ApicController中使用会话
我有一个APIController,它存储一个C# 如何在ApicController中使用会话,c#,asp.net-mvc,session,asp.net-apicontroller,C#,Asp.net Mvc,Session,Asp.net Apicontroller,我有一个APIController,它存储一个列表值,我希望列表项持久化,并使用会话获取项目并将其发布到列表中,以便将其拉入视图以显示购物车项目 我不太确定在哪里使用会话以及如何创建会话,因为我是会话新手 APIController: using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; usi
列表
值,我希望列表项持久化,并使用会话获取项目并将其发布到列表中,以便将其拉入视图以显示购物车项目
我不太确定在哪里使用会话以及如何创建会话,因为我是会话新手
APIController:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using System.Web;
using System.Web.UI;
using Microsoft.AspNetCore.Http;
using fyp.Models;
namespace fyp.Controllers
{
[Route("api/Cart")]
public class CartAPIController : Controller
{
private List<Cart> cart = new List<Cart>()
{
new Cart { CartId = 1,
FoodId = 6,
FoodName = "Beef & Tendon with Noodle",
quantity = 1,
price = 7},
new Cart { CartId = 1,
FoodId = 1,
FoodName = "Curry Beef Gravy with Beef Noodle",
quantity = 2,
price = 6}
};
// GET: api/<controller>
[HttpGet]
public IActionResult Get()
{
return Ok(cart);
}
// GET api/<controller>/5
[HttpGet("{id}")]
public string Get(int id)
{
return "value";
}
// POST api/<controller>
[HttpPost]
public IActionResult Post(Cart cart)
{
if (ModelState.IsValid)
{
this.cart.Add(
new Cart
{
CartId = cart.CartId,
FoodId = cart.FoodId,
FoodName = cart.FoodName,
quantity = cart.quantity,
price = cart.price
});
return Ok();
}
else
{
return BadRequest();
}
}
}
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Threading.Tasks;
使用Microsoft.AspNetCore.Mvc;
使用System.Web;
使用System.Web.UI;
使用Microsoft.AspNetCore.Http;
使用fyp模型;
名称空间fyp.Controllers
{
[路线(“api/购物车”)]
公共类CartaPicController:控制器
{
私有列表购物车=新列表()
{
新购物车{CartId=1,
FoodId=6,
FoodName=“牛肉筋配面条”,
数量=1,
价格=7},
新购物车{CartId=1,
FoodId=1,
FoodName=“咖喱牛肉肉汁配牛肉面”,
数量=2,
价格=6}
};
//获取:api/
[HttpGet]
public IActionResult Get()
{
返回Ok(购物车);
}
//获取api//5
[HttpGet(“{id}”)]
公共字符串Get(int-id)
{
返回“值”;
}
//后api/
[HttpPost]
公共IActionResult Post(购物车)
{
if(ModelState.IsValid)
{
这个是.cart.Add(
新手推车
{
CartId=cart.CartId,
FoodId=cart.FoodId,
FoodName=cart.FoodName,
数量=购物车数量,
价格
});
返回Ok();
}
其他的
{
返回请求();
}
}
}
}
列表中的项目仅用于测试,但如何在会话中实现空列表?提供了有关如何在asp.net应用程序中使用会话的信息
基本上,您似乎将现有的this.cart
替换为Session[“cart”]
,因此您的帖子类似于:
public IActionResult Post(Cart cart)
{
if (ModelState.IsValid)
{
Session["cart"].Add(
new Cart
{
CartId = cart.CartId,
FoodId = cart.FoodId,
FoodName = cart.FoodName,
quantity = cart.quantity,
price = cart.price
});
return Ok();
}
else
{
return BadRequest();
}
}
API是完全无状态的。前端和Api控制器之间没有会话。您应该使用MVC控制器,而不是Api控制器。但是我需要JSON格式的数据,以便在jquery中实时显示,还有其他选择吗?您可以使用浏览器的localstorage会话如何在Api完全无状态的情况下使用Api?我相信基本上,会话
变量被序列化为cookie并传递到UI,因此,实际上,状态是在发布页面时传递给服务器的cookie中。没有兄弟。除了MVC,API是不可能的。