当我存储在会话中时,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
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;
}
请不要忘记标记它是否解决了您的问题。