在列表中获取错误

时间:2017-04-28 18:56:14

标签: c# asp.net asp.net-mvc

我知道这是一个基本的问题。需要帮助在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的错误。

4 个答案:

答案 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的词法范围在大括号{}定义的范围内。因此,变量_o​​bj在循环外是不可访问的。将变量移到外部后,可以在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上,您只能在方法中使用它。你需要在迭代之外声明。