我知道这是一个基本的问题。需要帮助在List中使用foreach在List中存储数据来获取错误,但最后它给出了错误_obj
在上下文中不存在
我有ActionResult Page
public ActionResult Index()
{
var _objAdd = new C();
var Get_ClientInfor = example();
foreach (var item in Get_ClientInfor)
{
var _obj = new List<C>();
_objAdd.FirstName = item.Clients.FirstName;
_objAdd.LastName = item.Clients.LastName;
if (item.Clients.DateBirth != null)
_objAdd.Dob = item.Clients.DateBirth.Value;
_objAdd.Gender = item.ClientDemographics.Gender;
_obj.Add(_objAdd);
}
return View(_obj); //error ===>>>
}
获取上下文中不存在_obj
的错误。
答案 0 :(得分:3)
您需要交换_objAdd
和_obj
声明,因为_objAdd
是您要在foreach
循环中添加到集合的项目,而_obj
是一个集合你想回来:
public ActionResult Index()
{
var _obj = new List<C>();
var Get_ClientInfor = example();
foreach (var item in Get_ClientInfor)
{
var _objAdd = new C();
_objAdd.FirstName = item.Clients.FirstName;
_objAdd.LastName = item.Clients.LastName;
if (item.Clients.DateBirth != null)
_objAdd.Dob = item.Clients.DateBirth.Value;
_objAdd.Gender = item.ClientDemographics.Gender;
_obj.Add(_objAdd);
}
return View(_obj);
}
答案 1 :(得分:3)
你把_obj变量放在foreach上。您需要在迭代之外声明。试试这个:
public ActionResult Index()
{
var Get_ClientInfor = example();
var _obj = new List<C>();
foreach (var item in Get_ClientInfor)
{
var _objAdd = new C();
_objAdd.FirstName = item.Clients.FirstName;
_objAdd.LastName = item.Clients.LastName;
if (item.Clients.DateBirth != null)
{
_objAdd.Dob = item.Clients.DateBirth.Value;
}
_objAdd.Gender = item.ClientDemographics.Gender;
_obj.Add(_objAdd);
}
return View(_obj)
}
答案 2 :(得分:2)
将_obj
的声明移到foreach
循环之外
变量_obj
的词法范围在大括号{}
定义的范围内。因此,变量_obj在循环外是不可访问的。将变量移到外部后,可以在Index方法级别访问它。
public ActionResult Index()
{
var Get_ClientInfor = example();
var _obj = new List<C>();
foreach (var item in Get_ClientInfor)
{
var _objAdd = new C();
_objAdd.FirstName = item.Clients.FirstName;
_objAdd.LastName = item.Clients.LastName;
if (item.Clients.DateBirth != null)
{
_objAdd.Dob = item.Clients.DateBirth.Value;
}
_objAdd.Gender = item.ClientDemographics.Gender;
_obj.Add(_objAdd);
}
return View(_obj);//error ===>>
}
答案 3 :(得分:1)
您将_obj变量放在foreach上,您只能在方法中使用它。你需要在迭代之外声明。