0

我有 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); 
} 

我如何检索会话的所有值 [“映射”] 它持有 3 个条目 3ids、3cusips、3 计算

4

1 回答 1

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>();
    }
}

然后,您可以遍历每个列表属性并执行您需要的任何操作。

于 2012-04-20T13:24:24.273 回答