so after reading your long post, i think that you want to persist a List of B's without using a session to store.
I like you :D, most people would just have opted for the dirty solution using session state.
so here is a tip to get answers, talk less about abstractions and make your questions straightforward, like in this case, this question could have been: "How can i persist a List of B's without using Sessions?"
You have many options, this is the most straightforward one.
You pass your List of B's from your model to your view
[HttpGet]
public ActionResult WhatEver(int id)
{
var a = FetchA(id);
ViewData["myBs"] = a.Bs;
return View();
}
then in your view
<%=Html.Serialize("myBs", ViewData["myBs"])%>
then you get back those bs by
[HttpPost]
public ActionResult WhatEver(int id, [Deserialize]List<B> myBs)
{
//aloha
}