我正在使用C#MVC WEB API编写Web服务的网站,以便移动应用程序可以使用它们来存储和检索数据。现在有一个问题,在其中一个方法中有一个值,我必须在另一个方法中使用。我需要访问该值。我已经使用会话处理阅读了其他人关于同一问题的答案,但这也不是一个好方法。我应该如何获得这个价值?到目前为止,我已经做到了这一点。
public Object carYears(string Carmade, string CarModel) //not working
{
List<object> list = new List<object>();
int? manid = Convert.ToInt32(Carmade);
int? modid = Convert.ToInt32(CarModel);
var md = db.des_texts.Where(x => x.TEX_ID == modid).SingleOrDefault();
var manufac = db.manufacturers.Where(x => x.MFA_ID == manid).SingleOrDefault();
var mod = (from modl in db.models
join mn in db.manufacturers on modl.MOD_MFA_ID equals mn.MFA_ID
join cd in db.country_designations on modl.MOD_CDS_ID equals cd.CDS_ID
join dt in db.des_texts on cd.CDS_TEX_ID equals dt.TEX_ID
where (mn.MFA_ID == manid) && (cd.CDS_LNG_ID == 4) && (modl.MOD_PC == 1) && (dt.TEX_TEXT == md.TEX_TEXT)
orderby mn.MFA_BRAND, dt.TEX_TEXT
select new { modl.MOD_ID, mn.MFA_BRAND, dt.TEX_TEXT, modl.MOD_PCON_START, modl.MOD_PCON_END }).FirstOrDefault();
//TempData["modelid"] = mod.MOD_ID; <-- i need this value in another method
var session = HttpContext.Current.Session;
if (session != null)
{
if (session["modelid"] == null)
session["modelid"] = mod.MOD_ID;
}
这个TempData可以用于此目的吗?还有一件事是我在其中创建了会话和存储的值,但我仍然无法在其他方法中访问此值。
答案 0 :(得分:0)
将 在第一种方法中public class ExampleRequest
{
public int ExId {get; set;}
...Add more types required if any
}
public Object carYears(string Carmade, string CarModel)
{
//previous code
ExampleRequest request = new ExampleRequest();
request.ExId = mod.MOD_ID;
otherMethod(request);
}
public bool otherMethod(ExampleRequest request) {
int modId = request.ExId;
//otherCode
return true; //or false
}
答案 1 :(得分:0)
你不应该依赖会话这个我不认为。除非移动应用程序存储ASP.NET身份验证密钥并将其与每个请求一起传递。对于ASP.NET MVC网站,这是一个几乎“开箱即用”的功能,但您不能依赖于移动应用客户端的会话,无论API是否应该尊重REST。我不认为Web API和ASP.NET将确保将使用相同移动应用客户端的每个请求的相同会话。
carYears
方法可以将modelid
返回给移动应用,otherMethod
可以要求modelid
作为参数,然后移动应用可以包含{ {1}}在modelId
的下一个请求中,签名为:
otherMethod
否则,您的public returnType otherMethod(int modelId){}
只是调用方otherMethod
的私有“帮助方法”,并且会有签名,显然不需要会话,因为您只是传递了carYears
在modelid
到carYears
。
otherMethod