【问题标题】:Unable to access the object which is defined in the model class无法访问模型类中定义的对象
【发布时间】:2014-03-18 08:19:56
【问题描述】:

我正在尝试列出数据库中显示的数据,我创建了一个 ViewingGoals 类并在 ViewingGoalsBusinessLayer 类中实现其业务逻辑,代码如下

查看目标.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BusinessLayer
{
  public class ViewingGoals
    {
        public string Goal { get; set; }
    }
}

查看GoalsBusinessLayer.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using BusinessLayer;

namespace BusinessLayer
{
    public class ViewingGoalsBusinessLayer
    {
        public void ViewData(ViewingGoals viewgoal)
        {
            try
            {
                string Connectionstring = ConfigurationManager.ConnectionStrings["Connectionstring"].ConnectionString;
                List<ViewingGoals> viewgoals = new List<ViewingGoals>();
                using (SqlConnection con = new SqlConnection(Connectionstring))
                {
                    SqlCommand cmd = new SqlCommand("ViewGoal", con);
                    cmd.CommandType = CommandType.StoredProcedure;
                    con.Open();
                    SqlDataReader rdr = cmd.ExecuteReader();
                    while (rdr.Read())
                    {
                        //ViewingGoals viewgoal = new ViewingGoals();
                        viewgoal.Goal = rdr["Goal"].ToString();
                        viewgoals.Add(viewgoal);
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }
}

我的控制器代码是:

查看目标控制器.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using BusinessLayer;

namespace AppraisalManagementSystemFinal.Controllers
{
    public class ViewingGoalsController : Controller
    {
        //
        // GET: /ViewingGoals/

        public ActionResult ViewingGoals()
        {
            ViewingGoalsBusinessLayer viewinggoalsbusinessLayer = new ViewingGoalsBusinessLayer();
            List<ViewingGoals> viewgoals = viewinggoalsbusinessLayer.viewgoal.ToList();

            return View(viewgoals);
        }

    }
}

在那个控制器中,我试图从 ViewingGoalBusinessLayer 访问对象 列出 viewgoals = 查看目标businessLayer.viewgoal.ToList();我收到错误,因为不包含 viewgoal 的定义。

请帮助我克服它。

【问题讨论】:

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


    【解决方案1】:

    当您使用viewinggoalsbusinessLayer.viewgoal 时,您正在尝试从您的viewinggoalsbusinessLayer 对象访问viewgoal 属性。
    问题是您还没有在该对象中定义这样的属性!
    这是您的代码的更新部分

    public class ViewingGoalsBusinessLayer
        {
            public List<ViewingGoals> ViewGoals;
            public void ViewData(ViewingGoals viewgoal)
            {
                try
                {
                    string Connectionstring = ConfigurationManager.ConnectionStrings["Connectionstring"].ConnectionString;
                    Viewgoals = new List<ViewingGoals>();
                    // Rest of code is unchanged ...
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
        }
    

    下一个问题是您需要初始化该列表,我不确定您的 ViewData 函数在做什么...

    【讨论】:

    • 我首先使用代码“public IEnumerable 查看目标”而不是 viewdata 函数,但是“我在 get 函数中出错”“它没有重新运行所有路径代码”这就是我改变的原因..感谢您的回答,请告诉我如何在控制器上调用这些函数我是 mvc 的初学者,所以请我克服它@darkchico
    • 您可以尝试通过删除 ViewGoal 参数和使用它的行来更新您的 ViewData 代码吗?而在while循环中,使用ViewingGoals viewingGoals = new ViewingGoals (); viewingGoals.Goal goal = rdr["Goal"].ToString(); Viewgoals.Add(viewingGoals);,而在控制器中,使用viewinggoalsbusinessLayer.ViewData();调用函数也许我们会对应你需要的,但是你选择的名字并没有说得很清楚:)
    • 实际上这是我使用系统的实际代码;公共类 ViewingGoalsBusinessLayer{public ListViewGoals {get{try{string Connectionstring = ConfigurationManager.ConnectionStrings["Connectionstring"].ConnectionString;List viewgoals = new List(); \\ado.net 代码\\while (rdr.Read()){ViewingGoals viewgoal = new ViewingGoals();viewgoal.Goal = rdr["Goal"].ToString();viewgoals.Add(viewgoal);并且它在“get function”中显示错误,因为此路径中的所有代码都没有返回 value 。我在这里做的实际问题是什么??? @darkchico
    • 您可以将其重新发布到另一个答案而不是 cmets 吗?这里越来越难读了
    猜你喜欢
    • 2021-04-30
    • 1970-01-01
    • 1970-01-01
    • 2020-06-02
    • 1970-01-01
    • 1970-01-01
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多