我有mvc 3应用程序,其中在会话对象中我将所需的所有值作为参数来执行存储过程。
如果userAction更新,则执行存储过程。
public ActionResult Index(string userAction)
{
if(Session["Mappings"] != null)
ViewData["Message"] = "Mapping web grid";
if (Session["PricingSecurities"] == null)
Session["PricingSecurities"] = objRepository.GetPricingSecurityID();
if (Session["Cusips"] == null)
Session["Cusips"] = objRepository.GetCUSIP();
SecurityMappingModel objModel = null;
mappings = (List<SecurityMappingModel>)Session["Mappings"];
objModel = new SecurityMappingModel();
if (userAction == "Update" )
{
//help me to fix this code
//foreach (var item in Session)
//{Session["Mappings"] //NEED FIX HERE
//}
// PLEASE HELP ME TO RETRIEVE SESSION VALUES
return RedirectToAction("Index");
}
return View(objModel);
}
我如何检索会话的所有值[&#34;映射&#34;]它持有3个条目3ids,3cusips,3计算
答案 0 :(得分:1)
简短的回答是不要使用var
作为枚举类型,而是使用object
。
foreach (obj item in Session) {
if (item is CUSIP) {
// CUSIP processing
} else if (item is PricingSecurity) {
//Pricing security processing
} //etc.
}
正如您所看到的,此方法的问题在于您必须测试每个对象的类型,以便对其执行任何自定义操作。更好的想法是创建自己的类来存储在会话中:
public class SessionData()
{
List<CUSIP> Cusips {get;set;}
List<PricingSecurity> PricingSecurities {get;set;}
public SessionData()
{
// Initialize the lists so they are never null
this.Cusips = new List<CUSIP>();
this.PricingSecurities = new List<PricingSecurity>();
}
}
然后,您可以遍历每个列表属性并执行您需要的任何操作。