如何编写将随机数分配给用户列表的方法?

时间:2017-10-17 03:42:56

标签: c# asp.net-mvc visual-studio

我需要使用MVC架构创建一个应用程序。我需要为我的应用程序的用户生成5位数的随机数字。我的意思是,这个方法放在控制器用户身上,生成数字并在列表中显示它(用户+数字符号),如密码

你知道吗?对不起我的英语不好。 我需要它进行测试

public class User
{
    [Key]
    public int UserId { get; set; }

    public int Code { get; set; }

    public string Name { get; set; }
}

public ActionResult GenerateNumbers( User user)
{

    Random rand = new Random();
    int numero = rand.Next(1, 10000);
    return View();
    var nuevoCodigo = new User
    {
        Name = user.Name,
        Code = numero,        
    };
    db.Users.Add(nuevoCodigo);
}

3 个答案:

答案 0 :(得分:0)

您应该将操作更改为:

public ActionResult GenerateNumbers( User user)
    {

        Random rand = new Random();
        int numero = rand.Next(10000, 99999);

        var nuevoCodigo = new User
        {
            Name = user.Name,
            Code = numero,

        };
        db.Users.Add(nuevoCodigo);
        //You should commit your context here also  
        return View(db.Users); // Pass user list as your model to view
}

答案 1 :(得分:0)

您总是需要5位数代码,或者可以是1到5位数。

public ActionResult GenerateNumbers( User user)
{
  //first approach
  var nuevoCodigo = new User
  {
    Name = user.Name,
    Code = GenerateCode()    
  };
  //second approach
  var nuevoCodigo = new User
  {
    Name = user.Name
    Code =GenerateCode(5)
  };
  db.Users.Add(nuevoCodigo);
  return View(db.Users);
}

private int GenerateCode()
{
  Random rand = new Random();
  return rand.Next(10000, 99999);//change 10000 to 1 if code should be 1 digit
}


public int GenerateCode(int length)
{
   Random random = new Random();
   const string chars = "0123456789";
   string code =  new string(Enumerable.Repeat(chars, length)
      .Select(s => s[random.Next(s.Length)]).ToArray());
   return Convert.ToInt32(code);
}

答案 2 :(得分:0)

最重要的部分是使用User viewmodel返回视图,然后将生成的代码格式化为带有numeric format specifier的5位数代码,您可以尝试这种方法:

<强>控制器

public ActionResult GenerateNumbers(User user)
{
    Random rand = new Random();
    int numero = rand.Next(1, 100000);
    var nuevoCodigo = new User
    {
        Name = user.Name,
        Code = numero       
    };

    using (var db = new UserEntities())
    {
        db.Users.Add(nuevoCodigo);
        db.SaveChanges();
    }

    // return view page with assigned viewmodel properties
    return View(nuevoCodigo);
}

查看

@* using 'D' format specifier to show the value, including zeros *@
@Html.TextBoxFor(model => model.Code, "{0:D5}", null)

注意:Random.NextmaxValue参数是返回的随机数的独占上限(不计入数字生成的一部分,与minValue不同),因此如果您想指定0000199999之间的数字,maxValue应为100000

简单演示:.NET Fiddle