当我存储在会话中时,ID 会在查询字符串 bt 中传递,它被存储为“0”

本文关键字:存储 查询 会话 ID 字符串 bt | 更新日期: 2023-09-27 18:34:50

我正在最后一年从事一个 ASP.NET 项目,目前正在研究"管理"模块,并被困在下面给出的这部分代码中。我正在通过业务逻辑中的"SelectByID(int id("方法获取"服务"的对象。此方法返回"服务"的对象。现在,当我将此对象存储到会话中并查看对象的属性时,ID 存储为"0"。并且我需要在同一页面的另一种方法中使用此ID,我正在通过FileUploadControl更改显示图片。我正在附加我的方法的代码、方法的 C# 代码以及对象属性的屏幕截图。

<pre><code>public Service SelectByID(int ServiceID) 
        {
            string query = "select * from tblService where ServiceID=@ServiceID ";
            List<SqlParameter> lstParams = new List<SqlParameter>();
            lstParams.Add(new SqlParameter("@ServiceID", ServiceID));
            DataTable dt = DBUtility.SelectData(query, lstParams);
            Service serviceObj = new Service();
            if (dt.Rows.Count > 0)
            {
                serviceObj.Name = dt.Rows[0]["Name"].ToString();
                serviceObj.Description = dt.Rows[0]["Description"].ToString();
                serviceObj.Photo = dt.Rows[0]["Photo"].ToString();
            }
            return serviceObj;
        }
//Page Load Code 
protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["admin"] != null)
        {
            if (!IsPostBack)
            {
                ServiceLogic serviceLogic = new ServiceLogic();
                int id = Convert.ToInt32(Request.QueryString["Id"]); // Here ID is recieved properly from QueryString
                Service service = serviceLogic.SelectByID(id); //Here too ID is recieved(obviously)
                Session["service"] = service; //Here the ServiceID is storing  '0'
                lblService.Text = service.Name;
                txtServiceName.Text = service.Name;
                txtDescription.Text = service.Description;
                if (service.Photo == "")
                {
                    imgService.ImageUrl = "~/Images/defaultVendor.png";
                }
                else
                {
                    imgService.ImageUrl = service.Photo;
                }
            }
        }
        else
        {
            Response.Redirect("AdminLogin.aspx");
        }

    }
//Update profile pic code. Assume the above code where file extensions and file size are checked!
                  {
                    string filePath = Server.MapPath("~/Images/ServicesPhoto/" + fuServiceImage.FileName);
                    fuServiceImage.SaveAs(filePath);
                    lblServiceUpdate.Text = "Display Picture Changed Successfully!";
                    lblServiceUpdate.ForeColor = System.Drawing.Color.Green;
                    string imagePath = "~/Images/ProfilePics/" + fuServiceImage.FileName;
                    imgService.ImageUrl = imagePath;
                    Service service = (Service)Session["service"];
                    serviceLogic.updateServiceImage(imagePath, service.ServiceID);
                    service.Photo = imagePath;
                    lblService.Text = service.Name;
                    txtServiceName.Text = service.Name;
                    txtDescription.Text = service.Description;
                    imgService.ImageUrl = service.Photo;
                    //Response.Redirect("ServiceDetails.aspx");
           }

当我存储在会话中时,ID 会在查询字符串 bt 中传递,它被存储为“0”

您必须

从服务方法中获取ID

public Service SelectByID(int ServiceID) 
    {
        string query = "select * from tblService where ServiceID=@ServiceID ";
        List<SqlParameter> lstParams = new List<SqlParameter>();
        lstParams.Add(new SqlParameter("@ServiceID", ServiceID));
        DataTable dt = DBUtility.SelectData(query, lstParams);
        Service serviceObj = new Service();
        if (dt.Rows.Count > 0)
        {
            serviceObj.ID = dt.Rows[0]["ServiceID"].ToString();
            serviceObj.Name = dt.Rows[0]["Name"].ToString();
            serviceObj.Description = dt.Rows[0]["Description"].ToString();
            serviceObj.Photo = dt.Rows[0]["Photo"].ToString();
        }
        return serviceObj;
    }

在服务数据获取方法中添加 ID 对象

 serviceObj.ID = dt.Rows[0]["ServiceID"].ToString();

您似乎没有将 Id 获取并存储到服务对象中。

尝试以下方法:

    public Service SelectByID(int ServiceID) 
    {

        string query = "select * from tblService where ServiceID=@ServiceID ";
        List<SqlParameter> lstParams = new List<SqlParameter>();
        lstParams.Add(new SqlParameter("@ServiceID", ServiceID));
        DataTable dt = DBUtility.SelectData(query, lstParams);
        Service serviceObj = new Service();
        if (dt.Rows.Count > 0)
        {
            serviceObj.ID = dt.Rows[0]["ID"].ToString();
            // Or you can use
            // serviceObj.ID = ServiceID;
            serviceObj.Name = dt.Rows[0]["Name"].ToString();
            serviceObj.Description = dt.Rows[0]["Description"].ToString();
            serviceObj.Photo = dt.Rows[0]["Photo"].ToString();
        }
        return serviceObj;
    }

请不要忘记标记它是否解决了您的问题。