C# asp.net中的参数值传递
我有2个asp页面。首先,我是通过登录页面登录的,第二页是主页,在这里我可以看到一些任务的按钮。除此之外,我还获得了用户详细信息,包括全名、地址、细胞号、血型和EMAILID,一旦用户使用用户名和密码登录,这些信息将在数据库中的特定标签中动态显示 我已经在GetLoginDetails存储过程中编写了这个查询。我必须显示员工姓名、上次登录日期、时间等。一旦他登录并进入主页,我应该以同样的方式获得用户详细信息 更改过程[dbo]。[GetLastLogin] @LoggedInUser nvarchar50, @全名nvarchar50, @地址:nvarchar50, @MobileNumber bigint, @EmailID nvarchar50, @血型NVARCHA50, @EmpName nvarchar50 像 声明@LastLogin int Set@LastLogin=Select MAXAccessIDfrom dbo.ACCESS\u INFO,其中Flag=1 从dbo.Access\u INFO中选择Access\u Date、Access\u Time,其中LoggedInUser=@LoggedInUser和AccessID=@LastLogin 更新dbo.EmployeeData 设置Empname=@Empname 其中FullName=@FullName and Address=@Address和MobileNumber=@MobileNumber和EmailID=@EmailID和BloodGroup=@BloodGroup; 我收到一个错误消息,表示过程或函数“GetLastLogin”需要参数“@FullName”,但未提供该参数。请帮帮我 后端代码C# asp.net中的参数值传递,c#,asp.net,sql-server-2008,C#,Asp.net,Sql Server 2008,我有2个asp页面。首先,我是通过登录页面登录的,第二页是主页,在这里我可以看到一些任务的按钮。除此之外,我还获得了用户详细信息,包括全名、地址、细胞号、血型和EMAILID,一旦用户使用用户名和密码登录,这些信息将在数据库中的特定标签中动态显示 我已经在GetLoginDetails存储过程中编写了这个查询。我必须显示员工姓名、上次登录日期、时间等。一旦他登录并进入主页,我应该以同样的方式获得用户详细信息 更改过程[dbo]。[GetLastLogin] @LoggedInUser nvarc
protected void Page_Load(object sender, EventArgs e)
{
if (Session["Username"] != null)
{
try
{
MTMSDTO objc = new MTMSDTO();
LblLogdInUser.Text = Session["EmpName"].ToString();
LblUser.Text = Session["Username"].ToString();
objc.LoggedInUser = LblUser.Text;
DataSet laslogin = obj.GetLastLogin(objc);
DataView LasLogin = new DataView();
LasLogin.Table = laslogin.Tables[0];
GrdLasLogin.DataSource = LasLogin;
GrdLasLogin.DataBind();
if (!IsPostBack)
{
int lastlog = GrdLasLogin.Rows.Count;
if (lastlog == 0)
{
LblLastLoginD.Text = "This is your First Login";
DateTime today = System.DateTime.Now.Date;
LblToday.Text = today.ToString();
LblTime.Text = System.DateTime.Now.ToLongTimeString();
objc.LoggedInUser = LblLogdInUser.Text;
objc.AccessDate = Convert.ToDateTime(LblToday.Text);
objc.AccessTime = Convert.ToDateTime(LblTime.Text);
objc.AccessStatus = "New Login";
objc.AccessFlag = 1;
int accessinfo = obj.InsertAccessInfo(objc);
}
else
{
LblLastLoginD.Text = Convert.ToDateTime(GrdLasLogin.Rows[0].Cells[0].Text).ToString("dd/MMM/yyyy");
LblLastLoginT.Text = GrdLasLogin.Rows[0].Cells[1].Text;
DateTime today = System.DateTime.Now.Date;
LblToday.Text = today.ToString();
LblTime.Text = System.DateTime.Now.ToLongTimeString();
objc.LoggedInUser = LblLogdInUser.Text;
objc.AccessDate = Convert.ToDateTime(LblToday.Text);
objc.AccessTime = Convert.ToDateTime(LblTime.Text);
objc.AccessStatus = "New Login";
objc.AccessFlag = 1;
int accessinfo = obj.InsertAccessInfo(objc);
}
LblFname.Visible = true;
LblAdd.Visible = true;
LblMnum.Visible = true;
LblMailID.Visible = true;
LblBGroup.Visible = true;
}
}
catch (Exception ex)
{
Response.Redirect("ERROR.aspx");
Session.Abandon();
}
}
else
{
Response.Redirect("~/Login.aspx");
}
Response.CacheControl = "no-cache";
}
错误消息表明您需要为参数FullName提供值。所以,如果你还没有这样做,那就去做吧。这里唯一复杂的是空值;字符串可以为null,但要在ADO.NET中指定,需要传递DBNull.Value;如果使用null,则不包括该参数。这意味着您将得到如下代码:
cmd.Parameters.AddWithValue("FullName", (object)fullName ?? DBNull.Value);
很难看,但很管用
或者,许多助手实用程序将为您执行此操作。因此,对于整洁:
var lastAccess = conn.Query<AccessInfo>("GetLastLogin",
new { LoggedInUser = cn, FullName = fullName, /* snipped */ },
commandType: CommandType.StoredProcesdure).FirstOrDefault();
问题不在SQL中。它位于asp中的调用函数中。您没有正确地将fullname参数发送到SQL server。关于如何发送参数的示例,请查看此问题。
在ASP.NET代码中如何调用它?错误消息正确-您需要提供参数值;所以你在这么做吗?我用标签来显示它。所以,如何调用标签的参数是的,我肯定会发布我的代码。。。嗯,我觉得我的存储过程不正常耶,全名是必填字段。根据员工登录用户详细信息时应使用编辑填充的员工姓名,所有感兴趣的详细信息都位于方法调用中:DataSet laslogin=obj.GetLastLoginobjc;-那么-这是如何定义的?我已经编辑了我的问题以及后端代码,请继续。@Suraj所有重要的内容都在数据集laslogin=obj.GetLastLoginobjc;抱歉,伙计们,这和后端编码部分有关,而不是和存储过程有关,我把它整理好了。。使用网格视图,然后显示它。。它接受了空值。。。