C# asp.net中的参数值传递

C# asp.net中的参数值传递,c#,asp.net,sql-server-2008,C#,Asp.net,Sql Server 2008,我有2个asp页面。首先,我是通过登录页面登录的,第二页是主页,在这里我可以看到一些任务的按钮。除此之外,我还获得了用户详细信息,包括全名、地址、细胞号、血型和EMAILID,一旦用户使用用户名和密码登录,这些信息将在数据库中的特定标签中动态显示 我已经在GetLoginDetails存储过程中编写了这个查询。我必须显示员工姓名、上次登录日期、时间等。一旦他登录并进入主页,我应该以同样的方式获得用户详细信息 更改过程[dbo]。[GetLastLogin] @LoggedInUser nvarc

我有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”,但未提供该参数。请帮帮我

后端代码

    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;抱歉,伙计们,这和后端编码部分有关,而不是和存储过程有关,我把它整理好了。。使用网格视图,然后显示它。。它接受了空值。。。