【问题标题】:Cannot convert from string to int?无法从字符串转换为整数?
【发布时间】:2018-08-04 13:02:24
【问题描述】:

这些错误出现在登录功能中。

UserInfo(v.user_name, v.user_fname, v.user_bloodGp, v.user_nationality, v.usertype, v.status, v.gender, v.usercnic, v.user_passport, v.mobilenumber);

v.user_passportv.mobilenumber 带有下划线,并显示这些错误。

错误:参数 9:无法从 'string' 转换为 'int

错误:参数 10:无法从 'int' 转换为 'string'

红线显示在 v.user_passport、v.mobilenumber 下);两个参数。

 [HttpPost]
            [ValidateAntiForgeryToken]
            public ActionResult Login(User User)
            {
                var v = db.Users.Where(modal => modal.user_name.Equals(User.user_name)).Where(modal => modal.user_passport.Equals(User.user_passport)).SingleOrDefault();


                if (v != null)
                {
                    UserInfo(v.user_name, v.user_fname, v.user_bloodGp, v.user_nationality, v.usertype, v.status, v.gender, v.usercnic, v.user_passport, v.mobilenumber);
                    return RedirectToAction("Index");

                }
                return RedirectToAction("Wrongpassword");
            }


            public ActionResult UserInfo(string user_name,string user_fname,string usercnic,string user_passport,string user_bloodGp,string user_nationality,string usertype,string status,int mobilenumber,string gender)
            {
                Session["user_name"] = user_name;
                Session["user_fname"] = user_fname;
                Session["user_cnic"] = usercnic;
                Session["user_passport"] = user_passport;
                Session["user_bloodGp"] = user_bloodGp;
                Session["user_nationality"] = user_nationality;
                Session["usertype"] = usertype;
                Session["status"] = status;
                Session["mobilenumber"] = mobilenumber;
                Session["gender"] = gender;

                return new EmptyResult();
            }

【问题讨论】:

  • 只是一个友好的建议: * 为什么UserInfo方法在返回值从不使用时返回ActionResult? (为什么它不返回 void?) * 为什么该方法采用冗长的参数列表而不是 User 对象本身? * 电话号码在逻辑上是一个字符串,而不是一个数字。 ('604' 和 '0604' 是不同的数字。) * 最后(但最重要的是),不要在数据库中以明文形式存储密码!改为使用适当的散列和加盐。
  • 感谢您的建议。我已经注意到并做了一些更改。

标签: c# asp.net-mvc-4 session parameters


【解决方案1】:

它的运行时错误。字符串被传递给需要整数的变量,并且它试图将字符串转换为整数导致无效的转换异常。更正传递参数的顺序。

【讨论】:

    【解决方案2】:

    您只能将v 变量传递给UserInfo 函数,而不是传递所有这些参数

    【讨论】:

      【解决方案3】:

      你没有按正确的顺序传递参数,修改你的调用:

      UserInfo(v.user_name, v.user_fname, v.usercnic, v.user_passport, v.user_bloodGp, v.user_nationality, v.usertype, v.status,  v.mobilenumber, v.gender);
      

      如果您不使用命名参数,则在调用函数/方法时必须始终注意参数的顺序

      【讨论】:

        【解决方案4】:

        您的手机号声明为int,并且您正在尝试传递string,请在拨打UserInfo时进行转换

        UserInfo(v.user_name, v.user_fname, v.user_bloodGp, v.user_nationality, v.usertype, v.status, v.gender, v.usercnic, v.user_passport, int.Parse(v.mobilenumber));
        

        【讨论】:

        • 顺便说一下,也许你应该把手机号码的数据类型改成字符串,因为有时用户可以在电话号码前加“+”(使用电话号码的国际格式:+34 ...)
        • 是的,但我使用 int mobilenumber 是用户类模型,您可以在参数中看到我传递了一个整数。我仍然无法得到它。
        • 您确定您在 Class 用户模型中的手机号码是 Int 吗?你能发布用户类模型吗?
        • 公共类用户 { public int userid { get;放; } [必需] 公共字符串用户名 { 获取;放; } [必需] 公共字符串 user_fname { get;放; } 公共字符串 usercnic { 获取;放; } 公共字符串 user_passport { 获取;放; } 公共字符串 user_bloodGp { 获取;放; } 公共字符串 user_nationality { 获取;放; } 公共字符串用户类型 { 获取;放; } 公共字符串状态 { 获取;放; } 公共 int 手机号码 { 获取;放; } 公共字符串性别 { 获取;放; } }
        • 我为您的问题添加了新答案,请查看
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-10-22
        • 2016-02-24
        • 2015-03-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多