【发布时间】:2014-06-24 18:14:32
【问题描述】:
以下是我的 ASP.Net Web API 控制器代码。如您所见,这里使用了一个私有类对象 BL,并实现了两个 Get 方法。对于第一个方法 FetchAllDashboardByUserId(int userId),我传递了用户 id,以便可以启动 BL 对象。在同一个浏览器会话中,如果调用了第二个 get 方法,那么我不想传递用户 ID,因为默认情况下应该启动 BL,但目前情况并非如此。第二种方法的 BL 为空,所以我必须在方法调用中添加用户 ID - GetCardDataUI(int userId, int dashBoardID, int cardID)。我的问题是如何避免它。我的想法不正确吗:
-
我对以下 URL 进行连续调用的单个打开浏览器是单个会话:
webapi/ViewR?userId=1
webapi/ViewR?userId=1&dashBoardID=1&cardID=3
我不想在第二个 URL 中传递 userId。请注意,如果我将类对象声明为静态,那么它会按预期工作,但这不是我想要的,它必须与用户绑定:
public class ViewRController : ApiController
{
// BL object for a user
private static BL accessBL = null;
// HTTP GET for Webapi/ViewR (Webapi - name of API, ViewR - Controller with implementation)
[AcceptVerbs("Get")]
public List<DashboardUI> FetchAllDashboardByUserId(int userId)
{
if (accessBL == null)
accessBL = new BL(userId);
// Use BL object for entity processing
}
[AcceptVerbs("Get")]
public CardDataGetUI GetCardDataUI(int userId, int dashBoardID, int cardID)
{
if (accessBL == null)
accessBL = new BL(userId);
// Use BL object for entity processing
}
}
我希望第二种方法实现如何:
[AcceptVerbs("Get")]
public CardDataGetUI GetCardDataUI(int dashBoardID, int cardID)
{
// Use BL class object created in last call for entity processing
// Should not pass userid again
}
【问题讨论】:
-
您必须将用户详细信息存储在会话状态中。看看这个stackoverflow.com/questions/9594229/…
-
@CodingDawg,谢谢 这确实是解决方案,它为我解决了问题
标签: c# asp.net asp.net-mvc asp.net-mvc-4